2016-04-14 23 views

cevap

1

Bunun için awk kullanmanızı öneririz. 25 ilk sütunda birden defa yer alırsa

awk '{sub(/25/, "Z", $1)}1' input.file 

ve hepsini gsub yerine sub kullanmak değiştirmek istiyor: sütunlar boşluklarla ayrılmış olduğunu Having komut kadar basit olacaktır.

+0

Bu iş gibi görünüyor, tnx! "1" sonra "}" ne yapar? – Abdel

+1

@Abdel Bir awk programları, "CONDITION {ACTIONS}" biçiminde bir veya daha fazla ifadeden oluşur. Her iki durum ve eylemler isteğe bağlıdır. Hiçbir koşul belirtilmemişse, eylemler tüm giriş kayıtları için geçerlidir. Hiçbir eylem belirtilmemişse, varsayılan eylem kayıt "yazdırılır". '1' bundan yararlanır. Bu her zaman 'doğru'ya' değerlendiren bir durumdur. Hiçbir eylem belirtilmediğinden, tüm satırları basacaktır. Bu, {print} 'yazısını yazmakla aynı şeydir. – hek2mgl

+0

Bu, '1257’yi' 1Z7’ye dönüştürür ve satırdaki tüm beyaz alanı sıkıştırır. Bu arzu edilir mi? –

0

Kontrol bu:

echo "25 25 25 25 25" |perl -lane '$F[1]=~s/25/Z/g;print "@F"' 
25 Z 25 25 25 
İlgili konular