必要なのは、印刷された最後の2列のみです。
入力レコードのフィールドの総数に設定される変数NF
を使用できます。
awk '{print $(NF-1),"\t",$NF}' file
これは、少なくとも2つのフィールドがあることを前提としています。
awk '{print $NF-1, $NF}' inputfile
注:これは、少なくとも2つの列が存在する場合にのみ機能します。 1列のレコードでは、偽の"-1 column1"
を取得します
@jim mcnamara:NF
の周りに括弧を使用してみてください。 e。 $NF-1
および$NF
の代わりに$(NF-1)
および$(NF)
(FreeBSDのMac OS X 10.6.8で動作awk
およびgawk
)。
echo '
1 2
2 3
one
one two three
' | gawk '{if (NF >= 2) print $(NF-1), $(NF);}'
# output:
# 1 2
# 2 3
# two three
gawkを使用すると問題が発生します。
gawk '{ print $NF-1, $NF}' filename
1 2
2 3
-1 one
-1 three
# cat filename
1 2
2 3
one
one two three
Solaris 10 M4000にgawkを置いたところです。つまり、gawkは$ NF-1対$(NF-1)の問題のカプリットです。次の質問は、POSIXが何と言っていますか?あたり:
http://www.opengroup.org/onlinepubs/009695399/utilities/awk.html
いずれにせよ方向はありません。良くない。 gawkは減算を意味し、他のawksはフィールド番号または減算を意味します。うーん。