【问题标题】:Using Awk to search for a string that has spaces使用 awk 搜索有空格的字符串
【发布时间】:2012-02-24 02:56:09
【问题描述】:

我在使用 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

【问题讨论】:

    标签: awk


    【解决方案1】:

    与其玩报价游戏,不如使用 -v 选项将 shell 变量传递给 awk

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

    【讨论】:

      【解决方案2】:

      awk 字符串周围的单引号的目的是保留第一个参数中的所有内容(并防止 shell 替换)。你可以更灵活地把这个论点放在一起

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

      【讨论】:

        猜你喜欢
        • 2013-01-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-01
        • 2012-05-11
        • 1970-01-01
        • 1970-01-01
        • 2011-03-11
        相关资源
        最近更新 更多