bash - Почему тип -a выполняет «$ (printf 'a') »И можно ли вернуть первоначальный псевдоним? [дубликат]

Основа 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.)

1
13.04.2017, 15:36
0 ответов

Теги

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