2015-05-22 14 views
5

önce satır eklemeninKomut aşağıda bilgi ile dosya var ilk maçında

testing 
testing 
testing 

Ben sed veya herhangi linux komutunu

ihtiyacını kullanarak ilk test kelimenin önüne bir kelime (test) eklemek istediğiniz Bu sizin için işe yarayabilecek

tested 
testing 
testing 
testing 

teşekkür

+1

mklement0 @:

sed '0,/.*testing$/s/.*testing$/tested\n&/' file 

örnek, "-i" add sonuçla dosyanın içeriğini güncellemek için Evet ben sonradan gördüm. Sanırım bu yüzden 4 AM'de soruları okumamıştım :). Benim hatam. Teşekkürler! –

cevap

4

Tam: aşağıdakileri içeren hatları için

sed '0,/testing/s/testing/tested\n&/' file 

"test":

sed '0,/^testing.*/s/^testing.*/tested\n&/' file 

Fo "test" ile başlayan Lines için

sed '0,/.*testing.*/s/.*testing.*/tested\n&/' file 

"Test" ile biten r hatları:

sed -i '0,/testing/s/testing/tested\n&/' file 
6

gibi çıkışı (GNU sed) olsun:

sed -e '/testing/{itested' -e ':a;n;ba}' file 
testing ilk maçı öncesinde takın tested ve ardından baskısını/dosyanın geri kalanını okumak için bir döngü kullanır.

Veya GNU özgü kullanın:

sed '0,/testing/itested' file 
5

anlamak daha kolay olan bir awk tabanlı bir alternatif sağlamak için:

awk '!found && /testing/ { print "tested"; found=1 } 1' file 
  • found takip etmek için kullanılır asliye olmadığını testing bulundu (değişken found, herhangi bir Awk değişkeni olarak, varsayılan olarak 0,Boole bağlamında).
  • /testing/ nedenle testing içeren ilk hattı ile uyuşur ve ilişkili blok işler:
    • { print "tested"; found=1 } baskılar, istenen metin ve ilk testing hattı
  • 1 bir olduğu bulunmuştur bayrağı ayarlar { print } için ortak kısa yol, yani, sadece geçerli giriş satırını olduğu gibi yazdırmak.