使用Awk搜索包含空格的字符串
我在使用awk搜索文件中最后出现的字符串时遇到问题。我将向脚本示例“Ping在主机名上失败”传递一个字符串。我一直感到不舒服:^未终止的字符串。 #!/垃圾箱/垃圾箱使用Awk搜索包含空格的字符串,awk,Awk,我在使用awk搜索文件中最后出现的字符串时遇到问题。我将向脚本示例“Ping在主机名上失败”传递一个字符串。我一直感到不舒服:^未终止的字符串。 #!/垃圾箱/垃圾箱 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 = $a
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
在awk字符串周围使用单引号的目的是将所有内容保留在第一个参数中(并防止shell替换)。你可以更灵活地把这个论点组合起来
awk "/$args/"' {f=$0} END{print f}' $TMP_FILE > data.out
不要玩报价游戏,而是使用
-v
选项将shell变量传递给awk
awk -v pattern="$*" 'match($0, pattern) {f=$0} END {print f}'