【问题标题】:How to search by variable in awk如何在awk中按变量搜索
【发布时间】:2011-10-19 10:48:32
【问题描述】:

我正在尝试使用 awk 获取给定模式之后的第 N 行。 问题是 awk 从字面上搜索模式:

awk -v patt=${1} -v rows=${2}'NR==p {print} /patt/ {p=NR+rows}'

如何转义“patt”变量?

【问题讨论】:

    标签: awk pattern-matching


    【解决方案1】:

    使用 awk 匹配运算符而不是斜杠:

    awk -v patt=${1} -v rows=${2} 'NR==p {print} $0 ~ patt {p=NR+rows}'
    

    【讨论】:

      【解决方案2】:

      我已经设法让它工作了,用双引号

      patt=${1}
      awk -v rows=${2} "NR==p {print} /${patt}/ {p=NR+rows}" $3
      

      【讨论】:

        【解决方案3】:

        包含 awk 程序的字符串没有什么特别之处,所以你可以像往常一样在 shell 中构建它,例如:

        awk -v rows=${2}'NR==p {print} /'"$1"'/ {p=NR+rows}'
        

        【讨论】:

          猜你喜欢
          • 2019-03-18
          • 2015-01-03
          • 2019-01-17
          • 1970-01-01
          • 1970-01-01
          • 2019-01-17
          • 2017-11-12
          • 2016-07-28
          • 1970-01-01
          相关资源
          最近更新 更多