что здесь делает разделитель полей в awk? - PullRequest
0 голосов
/ 09 декабря 2011

В этом контексте, как работает указанный разделитель полей?

awk -F\' '{print "conn kill "$2"\nrepair mailbox "$2" repair=1"}'

Ответы [ 2 ]

2 голосов
/ 09 декабря 2011

-F\' использует одинарную кавычку ' в качестве разделителя полей.

Кроме того, ' экранируется, если ему предшествует \, поэтому awk не считает ' началом части действия.

В качестве альтернативы вы можете заключить ' в двойные кавычки:

$ echo "foo'bar'baz" | awk -F\' '{print $1}'
foo
$ echo "foo'bar'baz" | awk -F"'" '{print $1}'
foo
1 голос
/ 09 декабря 2011

AWK обрабатывает файл построчно.И каждая строка разделена на поля, к которым затем можно получить доступ с помощью долларовых переменных $1 ... $9 ($0 - это целая строка, IIRC).По умолчанию строка разделяется на поля с помощью разделения на пробел, но вы можете указать, какой символ разбивать, используя параметр командной строки -F или переменную FS.

Так в вашем случаеразделитель полей устанавливается в одинарную кавычку (').Строка ввода, такая как foo'bar'baz, таким образом, установит $1 == "foo", $2 == "bar" и $3 == "baz".

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