Я заметил, что lshw и lsof и занимают минуту для загрузки ее вывода, и если я передаю по каналу их вывод, который будет обработан awk, я получаю сообщение справки от awk и затем... ничто от первой команды.
В каких потребностях быть сделанным, чтобы позволить awk на самом деле извлечь вывод я нуждаюсь? Существует ли способ позволить каналу держаться, пока там не производится на самом деле доступный для awk, чтобы продолжить работать?
Рев - то, чего я делал попытку
$ lsof | awk `{print $3}`
mksh: {print: not found
Usage: awk [POSIX or GNU style options] -f progfile [--] file ...
Usage: awk [POSIX or GNU style options] [--] 'program' file ...
POSIX options: GNU long options: (standard)
-f progfile --file=progfile
-F fs --field-separator=fs
-v var=val --assign=var=val
Short options: GNU long options: (extensions)
-b --characters-as-bytes
-c --traditional
-C --copyright
-d[file] --dump-variables[=file]
-e 'program-text' --source='program-text'
-E file --exec=file
-g --gen-pot
-h --help
-L [fatal] --lint[=fatal]
-n --non-decimal-data
-N --use-lc-numeric
-O --optimize
-p[file] --profile[=file]
-P --posix
-r --re-interval
-S --sandbox
-t --lint-old
-V --version
To report bugs, see node `Bugs' in `gawk.info', which is
section `Reporting Problems and Bugs' in the printed version.
gawk is a pattern scanning and processing language.
By default it reads standard input and writes standard output.
Examples:
gawk '{ sum += $1 }; END { print sum }' file
gawk -F: '{ print $1 }' /etc/passwd
Обратите внимание, что зарегистрированные 3$ являются просто примером, он имеет тот же эффект с любым полем. Я также пробовал sudo lsof | awk
/test.txt/{Печатают 3$}'
Я также попробовал sudo lshw | awk
/cpu/{Печать}'
Примечание: Я знаю, что могу использовать grep, но я пытаюсь понять здесь, почему короткая пауза, которую берут lshw и lsof, не позволяет awk сделать свое задание, и как я могу работать вокруг той паузы, которую берут две команды
Проблема была всем об использовании надлежащих кавычек.
В Вашей команде
lsof | awk `{print $3}`
Вы даете awk
шаблон действия в синтаксисе замены команды (одинарные левые кавычки), в результате Ваша оболочка mksh
рассматривает его как команду и дает эту ошибку при замене им:
mksh: {print: not found
, Поскольку Вы уже получили это, Вам нужно надлежащее заключение в кавычки:
lsof | awk '{print $3}'