Satır numarasına göre dize değiştirme


50

Belirli bir dizeyi birçok dosyada değiştirmek istediğim bir durum var

AAA dizesini başka bir BBB dizesiyle değiştirin, ancak AAA ile başlayan veya AAA ile biten çok sayıda dizeler var ve yalnızca 34 satırından birini değiştirmek ve diğerlerini korumak istiyorum.

Satır numarasına göre belirtmek mümkün mü, tüm dosyalarda bu dize tam olarak 34. satırda.

Yanıtlar:


82

Satır sayısını sed olarak veya NR (kayıt sayısı) olarak awk olarak belirleyebilirsiniz.

awk 'NR==34 { sub("AAA", "BBB") }'

veya komut satırında birden fazla dosya belirtmek istiyorsanız FNR (dosya numarası kaydı) kullanın.

awk 'FNR==34 { sub("AAA", "BBB") }'

veya

sed '34s/AAA/BBB/'

sed ile yerinde değiştirme yapmak

sed -i '34s/AAA/BBB/' file_name

-3

file_record içindeki üçüncü satırı değiştirmek istediğinizi varsayalım:

sed -i "s/`head -3 file_record | tail -1 `/replaced/" file_record

kafadan önce ve -1 sonra geri alıntı kullanın ... burada almaz
RAMAN

1
Bu işe yaramayacak. Bazı ağır işlerden kaçma ihtiyacı var. Peki ya üçüncü satır başka bir yerde çoğaltılırsa?
Sparhawk
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.