AWK работает как текстовый интерпретатор , который распространяется также на весь документ и , который идет по полю для каждой строки , таким образом, $ 1, $ 2 .. $ n являются ссылками на поля каждой строки ($ 1 - первое поле, $ 2 - второе поле и т. Д.).
Вы можете определить разделитель полей, используя переключатель «-F» в командной строке или в двух скобках с «FS = ...».
Теперь рассмотрим ответ "JUERGEN":
echo "1: " | awk -F ":" '/1/ {print $1}'
Над границами поля установлены ":", поэтому у нас есть два поля $ 1, которое равно "1", и $ 2, которое является пустым пространством. После этого появляется регулярное выражение "/ 1 /", которое инструктирует фильтр выводить первое поле только тогда, когда интерпретатор натыкается на строку, содержащую такое выражение (я имею в виду 1);
Вывод команды "echo" - это одна строка, содержащая "1", поэтому фильтр будет работать ...
При работе со следующим примером:
echo "1: " | awk '/1/ -F ":" {print $1}'
Синтаксис запутан, и интерпретатор решил игнорировать часть F ":"
и переключился на разделитель полей по умолчанию, который является пустым полем, таким образом, выводя «1:» в качестве первого поля и второго поля не будет!
Ответ JUERGEN содержит хороший синтаксис ...