2012-07-09 14 views
25

Tamam belirli endeksinin karakterleri yazdırmak için awk kullanarak, yüzden $ kullanarak bir çizginin belirli argümanları yazdırmak için oldukça basittir biliyorum: Ben aracılığıyla karakter 2 yazdırmak istiyorsanızbir hat

$ cat file 
hello world 

$ awk '{print $1}' file 
hello 

Ama ne 8? ya da 3 ila 7? Bu awk ile mümkün mü?

cevap

42
awk '{print substr($0,2,6)}' file 

substr sözdizimi()

substr(string,start index,length)

+0

Neden saha ayırıcı '-F = '\ n'' gereklidir? Yoksa öyle mi? – Levon

+0

@Levon, OP'nin alanın tamamını değil, tüm kaydın alt dizisini bulmak istediğini düşündü. – nims

+3

Biraz kafam karıştı, tartışmaya çalışmıyorum, sadece kendim için bunu düzeltmek için. "$ 0" zaten mevcut satırın tamamı, bu yüzden tüm satırın alt dizelerini alıyorsanız, neden -F'yi belirtmeniz gerektiğini anlamıyorum. Burada neyi özlüyorum? – Levon

2

Perl bir seçenek ise:

perl -lne 'print substr($_,1,6)' file 

Çıktı @nims gelen cevap aynıdır