2011-02-08 15 views
5

Ben awk için yeniyim ve bunu anlayamıyorum. Normal bir ifade kullanarak nasıl tek bir alanda yer alabilirim?awk stumper: bir alan içinde normal ifadeyi değiştirme

Perl'de, ilgilenilen alanı bir değişkene atayabilirim, sonra $myvar =~ s/foo/bar/g. Tabii ki de perl'de kendi saha yönetimimi yapmam gerekiyor ve bu da awk'ta daha kolay.

Şimdilik sorun şu anda Avrupa para kayıtlarıdır ve virgülleri miktar alanındaki dönemlere değiştirmek istiyorum. Ama sadece o alanı hedeflemem gerekiyor, bu yüzden virgüllerin düz noktalama işaretleri olarak kullanılabildiği diğer alanları karıştırmam.

Çözüm, hayal ettiğimden daha mı zor? Ya da daha basit? Kayıt ayırıcısını veya böyle yapışkan bir şeyi değiştirmek zorunda mıyım?

Yardımlarınız için teşekkür ederiz!

cevap

6

alt() alanı (veya değişken) değiştirmek için bir üçüncü argüman kabul eder: Ben O'Reilly o cevapsız emin değilim nasıl

$ echo '02/08/2011 7,33 Shopping' | awk '{sub(/,/,".",$2)} 1' 
02/08/2011 7.33 Shopping 
+0

Vay,. İşte burada. Her şey yolunda olmalı. TEŞEKKÜR EDERİM! – rockriver

İlgili konular