Как передать вывод AWK в переменную?
Вопрос
У меня есть небольшой скрипт bash, который обрабатывает абзац grep/awk, используя ключевое слово.
Но после добавления дополнительных кодов: set var = "(......)"
он печатает только пустую строку, а не абзац.
Поэтому я хотел бы спросить, знает ли кто-нибудь, как правильно передать вывод awk в переменную для вывода?
Мои коды:
#!/bin/sh
set var = "(awk 'BEGIN{RS=ORS="\n\n";FS=OFS="\n"}/FileHeader/' /root/Desktop
/logs/Default.log)"
echo $var;
Спасибо!
Решение
Использовать замена команд захватить вывод процесса.
#!/bin/sh
VAR="$(awk 'BEGIN{RS=ORS="\n\n";FS=OFS="\n"}/FileHeader/' /root/Desktop/logs/Default.log)"
echo "$VAR"
Некоторые общие советы в отношении сценариев Shell:
- (Почти) всегда цитируйте каждую переменную ссылку.
- Никогда не кладите пробелы вокруг равных знаков в переменном задании.
Другие советы
- Вам нужно использовать «Подстановка команды». Поместите команду внутри либо 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 $2}'); kill -9 $VAR 2>/dev/null; unset VAR;
Каждый раз, когда вы видите, что grep передается по конвейеру awk, вы можете удалить grep.для вышесказанного,
awk '/^password/ {print $2}'
awk может легко заменить любую текстовую команду, например Cut, Tail, WC, TR и т. д.и особенно несколько команд grep, передаваемых друг за другом.то есть
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 $2}')
echo $BUILD_PASSWORD
Вы можете к тому же с grep ^user