Использование Awk для поиска строки с пробелами - PullRequest
2 голосов
/ 23 февраля 2012

У меня проблемы с поиском последнего вхождения строки в файле с использованием awk. Я передаю строку в примере сценария "Ping не удалось на имя хоста". Я продолжаю получать awk: ^ неопределенная строка. #! / Bin / ш

LOG=/opt/netcool/omnibus/log/mttrapd.log
TMP_FILE=sitescope.$$
args="$*"

#ruby sitescope.rb

echo "looking for $1 "

tail -1000  $LOG > $TMP_FILE

echo "WORD = $args"

awk  '"/'$args'/" {f=$0} END{print f}' $TMP_FILE > data.out

rm -f $TMP_FILE

Ответы [ 2 ]

4 голосов
/ 23 февраля 2012

Вместо того, чтобы играть в игры с цитированием, передайте переменную оболочки в awk с опцией -v

awk -v pattern="$*" 'match($0, pattern) {f=$0} END {print f}'
2 голосов
/ 23 февраля 2012

Смысл одинарных кавычек вокруг строки awk - хранить все в первом аргументе (и предотвращать подстановку оболочки).Вы можете быть немного более гибкими с тем, как вы объедините этот аргумент как

awk  "/$args/"' {f=$0} END{print f}' $TMP_FILE > data.out
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...