Как остановить загрузку / загрузку Ubuntu?

Просто потому, что это возможно, вот какие альтернативные подходы могут быть приняты.

ARGIND с переменными NR и FNR

Этот подход проходит через файл дважды, и в данный момент

Для обработки одного и того же файла, но при извлечении различной информации файл дважды указывается в командной строке. Как мы различаем, когда мы запускаем первый файл (для извлечения полей $ 1 и $ 2) и через секунду? С помощью переменной ARGIND. NR - общая запись, обработанная до сих пор, а FNR - полная запись, обработанная в текущем файле. С первым файлом они одинаковы. Когда они будут отличаться? Когда мы перейдем к второму файлу. В этот момент нам нужно напечатать новую строку, но каким-то образом предотвратить ее печать для других значений, где NR > FNR. Мы поднимаем флаг (через переменную флага).

Пример вывода:

$ awk '!flag && NR>FNR {print "";flag=1} ARGIND==1{print $1,$2}ARGIND==2{print $3,$4}' data.txt data.txt                  
John Bender
Bohn Jender
Jen Bondher

AGE 21
AGE 420
AGE 2345678909876543234567890876543234567890876543

Использование предложения END

Как упоминалось в комментариях в ответ на heemayls, при использовании двух отдельных команд awk можно использовать [ f8], чтобы распечатать что-то после завершения обработки файла

$ awk '{print $1,$2}END{print "\n"}' data.txt;  awk '{print $3,$4}' data.txt                                                          
John Bender
Bohn Jender
Jen Bondher


AGE 21
AGE 420
AGE 2345678909876543234567890876543234567890876543

Изменение в блоке END с ассоциативными массивами

Поскольку ваш блок $ 3 в основном является одним и тем же снова и снова (строка " AGE ") вам не нужно его хранить, но вы можете хранить $ 4 в ассоциативный массив. Затем в END-блоке вы можете перебирать сохраненные значения после печати новой строки.

$ awk '{print $1,$2;age[i++]=$4}END{print"";for(var in age) print "AGE",age[var]}' data.txt                                           
John Bender
Bohn Jender
Jen Bondher

AGE 21
AGE 420
AGE 2345678909876543234567890876543234567890876543
2
задан 16 April 2012 в 14:17

0 ответов

Другие вопросы по тегам:

Похожие вопросы: