使用Awk搜索包含空格的字符串

时间:2012-02-23 18:04:56

标签: awk

我在使用awk搜索文件中最后一次出现的字符串时遇到问题。我正在将一个字符串传递给脚本示例“Ping在主机名上失败”。我一直得到awk:^未终止的字符串。     #!/ bin / sh的

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 个答案:

答案 0 :(得分:4)

不是玩引用游戏,而是使用-v选项

将shell变量传递给awk
awk -v pattern="$*" 'match($0, pattern) {f=$0} END {print f}'

答案 1 :(得分:2)

awk字符串周围的单引号的意思是将所有内容保存在第一个参数中(并防止shell替换)。你可以更灵活地将这个参数放在一起作为

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