Как передать выход AWK в переменную?

у меня есть небольшой скрипт bash, который greps / awk абзац с помощью ключевого слова.

но после добавления дополнительных кодов:set var = "(......)" он печатает только пустую строку, а не абзац.

поэтому я хотел бы спросить, знает ли кто-нибудь, Как правильно передать вывод awk в переменную для вывода?

мой код:

#!/bin/sh

set var = "(awk 'BEGIN{RS=ORS="nn";FS=OFS="n"}/FileHeader/' /root/Desktop
/logs/Default.log)"
echo $var;

спасибо!

5 ответов


использовать команду для захвата выходных данных процесса.

#!/bin/sh

VAR="$(awk 'BEGIN{RS=ORS="\n\n";FS=OFS="\n"}/FileHeader/' /root/Desktop/logs/Default.log)"
echo "$VAR"

некоторые общие советы относительно сценариев оболочки:

  • (почти) всегда цитируйте каждую ссылку на переменную.
  • никогда не ставьте пробелы вокруг знака равенства в присваивании переменных.

  • вам нужно использовать "подстановку команд". Поместите команду внутри любой backticks,`COMMAND` или, в скобках, предшествующих знаку доллара,$(COMMAND).
  • чтобы установить переменную, которую вы не используете set и у вас не может быть пробелов до и после =.

попробуйте это:

var=$(awk 'BEGIN{RS=ORS="\n\n";FS=OFS="\n"}/FileHeader/' /root/Desktop/logs/Default.log)
echo $var

вы дали мне идею этого для убийства процесса :). Просто хром для любого процесса, который вы хотите убить.

попробуйте это:

VAR=$(ps -ef | grep -i chromium | awk '{print }'); kill -9 $VAR 2>/dev/null; unset VAR;

в любое время, когда вы видите grep по трубе awk, вы можете бросить grep. для вышеперечисленного,

awk '/^password/ {print }'

awk может легко заменить любую команду текста как отрезок, хвост, wc, TR etc. и особенно много greps пилили рядом друг с другом. я.е

grep some_co.mand | a | grep b ... to | awk '/a|b|and so on/ {some action}.

попробуйте создать переменную, поступающую из vault / Hashicorp, при использовании переменных шаблона packer, например:

BUILD_PASSWORD=$(vault read secret/buildAccount| grep ^password | awk '{print }')
echo $BUILD_PASSWORD

вы можете то же самое с grep ^user