Поддерживает ли awk ввод с нулевым разделением, как и другие команды, такие как sort, read, grep, et c.?
awk
sort
read
grep
Я пытаюсь это:
printf 'one\0two' | awk -F '\0' '{print $2}'
Я ожидал, что он выдаст two, но я получаю:
two
n
Никакие стандартные инструменты 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.
\n
$ printf 'one\0two\n' | gawk -F '\0' '{print $2}' two
Альтернативный способ сделать это - использовать xargs:
xargs
$ printf 'one\0two' | xargs -0 -n1 echo one two