4. satırı "farklı" metniyle değiştirmek istediğinizi varsayalım. AWK'yi şu şekilde kullanabilirsiniz:
awk '{ if (NR == 4) print "different"; else print $0}' input_file.txt > output_file.txt
AWK, girdiyi "alanlara" bölünmüş "kayıtlar" olarak kabul eder. Varsayılan olarak, bir satır bir kayıttır. NR
görülen kayıtların sayısıdır. $0
geçerli tam kaydı temsil eder (kayıttaki $1
ilk alandır vb. alanlar varsayılan olarak satırdaki sözcüklerdir).
Dolayısıyla, mevcut satır numarası 4 ise, "farklı" dizesini yazdırın, aksi takdirde satırı değiştirmeden yazdırın.
AWK'da, içine alınan program kodu { }
her giriş kaydında bir kez çalışır.
Kabuğun .xml gibi şeyleri yorumlamaya çalışmasını önlemek için AWK programını tek tırnak içinde alıntılamanız gerekir $0
.
DÜZENLEME: Aşağıdaki yorumlarda @chepner'dan daha kısa ve daha zarif bir AWK programı:
awk 'NR==4 {$0="different"} { print }' input_file.txt
Yalnızca 4 numaralı kayıt (yani satır) için, tüm kaydı "farklı" dizesiyle değiştirin. Ardından her giriş kaydı için kaydı yazdırın.
Açıkçası AWK becerilerim paslanmış! Teşekkürler @chepner.
DÜZENLEME: ve ayrıca @Dennis Williamson'dan daha kısa bir versiyona bakın:
awk 'NR==4 {$0="different"} 1' input_file.txt
Bunun nasıl çalıştığı yorumlarda açıklanmıştır: 1
her zaman doğru olarak değerlendirilir, bu nedenle ilişkili kod bloğu her zaman çalışır. Ancak ilişkili bir kod bloğu yoktur, bu da AWK'nın varsayılan eylemini yalnızca tüm satırı yazdırmak gibi yaptığı anlamına gelir. AWK, bunun gibi kısa programlara izin verecek şekilde tasarlanmıştır.
sed: -e expression #1, char 26: unknown option to ``s'
ve benim çizgisidir:sed -i '7s/.*/<param-value>http://localhost:8080/ASDF/services/REWS.REWSHttpSoap12Endpoint/</param-value>/' $TCE_SVN_HOME\trunk\tce\EWC\WebContent\WEB-INF\web.xml
. Herhangi bir fikir?