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