Каково различие между командами 'cat' и 'echo' с помощью awk? - PullRequest
0 голосов
/ 27 апреля 2018

Это test.file:

2017
2018

Вот что я попробовал в терминале:

$ echo 2 | awk '{ print 6 }'   
6
$ cat test.file | awk '{ print 6 }'
6
6

Мой вопрос:

Почему echo не показывает число 6 дважды, как cat?

1 Ответ

0 голосов
/ 27 апреля 2018

Файл, который вы вводите cat, содержит две строки ввода, тогда как поток, который вы передаете с echo, - только одна строка.

Если вы измените echo s на эквивалентные, как в:

{ echo 2017; echo 2018; } | awk '{ print 6 }'

... вы получите те же две строки вывода.


Здесь следует помнить, что сценарий awk состоит из кусочков общего вида PATTERN { BLOCK }, где PATTERN определяет, будет ли выполняться БЛОК и когда. (Оба из них являются необязательными: шаблон по умолчанию должен выполняться для каждой строки; блок по умолчанию - { print $0 }, чтобы напечатать текущую строку полностью).

Когда у вас просто есть { print 6 }, вы сохраняете шаблон по умолчанию (который должен запускать этот блок для каждой строки ввода). Следовательно, когда вы вводите две строки ввода, { print 6 } запускается дважды.

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