【问题标题】:Pass shell parameters to awk regex将 shell 参数传递给 awk 正则表达式
【发布时间】:2015-03-21 11:10:43
【问题描述】:

我有以下脚本

#!/bin/bash
file="path/to/file"
/usr/bin/awk '/chapter:/ {f=0} /chapter: 25/ {f=1} f' $file

如何使用变量的值代替25?

类似这样的:

#!/bin/bash
file="path/to/file"
num=25
/usr/bin/awk '/chapter:/ {f=0} /chapter: <num>/ {f=1} f' $file

附言

  1. /usr/bin/awk -v n="$num" '/chapter:/ {f=0} /chapter: n/ {f=1} f' $file不工作
  2. 我不能为此使用任何其他工具,因为awk 是我想做的最快的工具

有什么想法吗?

【问题讨论】:

标签: regex bash shell awk


【解决方案1】:

您在这里走在正确的轨道上,但是对于构建正则表达式的第二部分。您可以使用:

awk -v n="$num" '/chapter:/{f=0} $0 ~ "chapter: " n {f=1} f' file

您需要使用变量n 构建正则表达式并使用~ 运算符进行正则表达式匹配。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-10
    • 1970-01-01
    • 2012-07-14
    • 1970-01-01
    • 1970-01-01
    • 2014-10-16
    • 1970-01-01
    • 2011-01-14
    相关资源
    最近更新 更多