2012-02-23 61 views
2

我在使用awk搜索文件中最后一次出现字符串时遇到问题。我将一个字符串传递给脚本示例“Ping在主机名上失败”。我不断收到awk:^未终止的字符串。 #!/ bin/sh的使用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 2012-02-23 18:20:29

4

而不是玩引述游戏,通过shell变量与-v选项awk的

awk -v pattern="$*" 'match($0, pattern) {f=$0} END {print f}'