AWK читает файл в обратном порядке и печатает указанные столбцы - PullRequest
0 голосов
/ 04 февраля 2020

Можно ли читать файл в обратном порядке и печатать только указанные столбцы с помощью одной команды awk? Например, существует текстовый файл для анализа:

A1 1 ABC 7
B2 2 CBZ 8
C3 3 XVY 9

Для печати строк в обратном порядке я использую следующую команду:

awk '{a[i++]=$0}END{for(j=i-1;j>=0;j--)print a[j];}' file.txt

Но мне нужно напечатать только столбцы $ 1 и $ 3 ? Желаемый результат:

C3 XVY
B2 CBZ
A1 ABC

Конечно, это можно сделать несколькими способами, но цель - одна команда awk.

Ответы [ 2 ]

3 голосов
/ 04 февраля 2020

В вашей команде вы сохранили всю строку ($0) в массиве a, с небольшими изменениями вы можете хранить необходимые столбцы, как показано ниже:

awk '{a[i++]=$1FS$3}END{for(j=i-1;j>=0;j--)print a[j];}'
C3 XVY
B2 CBZ
A1 ABC
2 голосов
/ 04 февраля 2020

Если вы не возражаете против использования другой команды, то tac + awk выполняет работу:

tac file | awk '{print $1, $3}'

C3 XVY
B2 CBZ
A1 ABC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...