Как напечатать последние два столбца с помощью awk
все, что я хочу последние две колонки напечатаны.
4 ответа:
Вы можете использовать переменную
NF
который устанавливается на общее количество полей во входной записи:awk '{print $(NF-1),"\t",$NF}' file
это предполагает, что у вас есть по крайней мере 2 поля.
awk '{print $NF-1, $NF}' inputfile
Примечание: это работает только в том случае, если существует по крайней мере два столбца. На записи с одним столбцом вы получите ложное
"-1 column1"
@jim mcnamara: попробуйте использовать круглые скобки для
NF
, Я. е.$(NF-1)
и$(NF)
вместо$NF-1
и$NF
(работает на Mac OS X 10.6.8 для FreeBSDawk
и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
Я только что поставил gawk на Solaris 10 M4000: Итак, gawk-это cuplrit в выпуске $NF-1 против $(NF-1). Следующий вопрос что говорит POSIX? Пер:
http://www.opengroup.org/onlinepubs/009695399/utilities/awk.html
нет никакого направления в ту или иную сторону. Не хороший. gawk подразумевает вычитание, другие awk подразумевают номер поля или вычитание. хм.