2012-07-09 7 views
25

よし上の特定のインデックスの文字を印刷するためのawkを使用したので、私は$使用して線の固有の引数を印刷することは非常に簡単です知っている:私はを通じて文字2を印刷したい場合はライン

$ cat file 
hello world 

$ awk '{print $1}' file 
hello 

しかし、何を8? 3〜7?それはawkで可能ですか?

答えて

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

SUBSTRの構文は()

substr(string,start index,length)

+0

なぜフィールドセパレータ '-F = '\ n''必要がありますか?またはそれは? – Levon

+0

@ Levon私はOPがフィールドではなくレコード全体の部分文字列を探したいと思っていました。 – nims

+3

私はちょっと混乱しています。 '$ 0'はすでに現在の行全体であるので、現在の行全体の部分文字列を取っているなら、なぜ' -F'を指定しなければならないのか分かりません。 – Levon

3

はいです。あなたのケースでは

http://www.starlink.rl.ac.uk/docs/sc4.htx/node38.html

- 印刷文字のために2から8まで:あなたはsubstr機能を使用することができます

echo "hello" | awk '{ print substr($0, 2, 6) }' 

結果は次のとおりです。

ello

2

Perlがオプションの場合:

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

出力が@nimsから答えると同じです