2010-11-29 45 views

回答

158

你可以利用它被設置爲輸入記錄的字段總數變量NF的:

awk '{print $(NF-1),"\t",$NF}' file 

這個假定您至少有2個字段。

10
awk '{print $NF-1, $NF}' inputfile 

注意:只有至少存在兩列的情況下,此項纔有效。上有一列的記錄,你會得到一個僞"-1 column1"

+7

`$ NF-1`將不起作用。 – codaddict 2010-11-29 15:02:33

+2

試試看。它確實可以運行Solaris 9 awk&nawk。替代是$(NF-1) – 2010-11-29 15:04:34

+1

在這裏你去:http://www.ideone.com/FQCuF – codaddict 2010-11-29 15:08:08

1

使用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 

我只是把GAWK在Solaris 10 M4000: 所以,GAWK是在$ NF-1與$(NF-1)發行cuplrit。下一個問題POSIX說什麼? 每:

http://www.opengroup.org/onlinepubs/009695399/utilities/awk.html 

沒有方向的一種方式或其它。不好。 gawk意味着減法,其他awks意味着場數或減法。哼。

7

@jim mcnamara:嘗試使用大括號NF,即i。即$(NF-1)$(NF),而不是$NF-1$NF(適用於FreeBSD的Mac OS X 10.6.8和更高版本的和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