Основа AWK - делать что-то для строки, которая что-то соответствует. У вас есть два типа линий, поэтому они соответствуют каждому и печатаются по-разному для каждого. Один из способов сделать это:
awk '/^uid/ { print } /^mail/ { print $3" "$4" "$1" "$2 }' <your files>
Как это работает:
uid
, он печатает их в том виде, в каком они появляются; mail
столбцы располагаются по-разному (обратите внимание на лишний пробел между $ 1
и $ 2
, поскольку он находится там, в строках uid
). (Это полезно, если у вас есть другие строки в файле.)
Другой способ:
awk '/^mail/{$0=$3" "$4" "$1" "$2};1' <your files>
Как это работает:
print
печатает $ 0
(полный строка) по умолчанию; ; 1
эквивалентно ; {print}
; $ 0
для строк, соответствующих ^ mail
. (Этот, вероятно, будет быстрее, если вы хотите обработать и распечатать все строки в файле . Спасибо, don_crissti.)