2012-02-23 4 views
2

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

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

Точка одинарные кавычки вокруг строки AWK, чтобы держать все в первый аргумент (и предотвратить замену оболочки). Вы можете быть немного больше flexable с тем, как вы положили этот аргумент вместе

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

Спасибо за быстрый ответ ! Оно работает ! – mig0913

4

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

awk -v pattern="$*" 'match($0, pattern) {f=$0} END {print f}' 
Смежные вопросы