Может ли awk читать текст с нулевым разделителем? - PullRequest
1 голос
/ 18 апреля 2020

Поддерживает ли awk ввод с нулевым разделением, как и другие команды, такие как sort, read, grep, et c.?

Я пытаюсь это:

printf 'one\0two' | awk -F '\0' '{print $2}'

Я ожидал, что он выдаст two, но я получаю:

n

Ответы [ 2 ]

3 голосов
/ 18 апреля 2020

Никакие стандартные инструменты POSIX не поддерживают это, поскольку это не текстовый файл POSIX (см. https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_403), а так же, как сортировка GNU, GNU grep и GNU sed, поэтому GNU awk поддерживает его. YMMV с вводом, который также не является допустимым текстовым «файлом» POSIX из-за отсутствия завершения \n.

$ printf 'one\0two\n' | gawk -F '\0' '{print $2}'
two
0 голосов
/ 18 апреля 2020

Альтернативный способ сделать это - использовать xargs:

$ printf 'one\0two' | xargs -0 -n1 echo
one
two
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...