将shell参数传递给awk正则表达式

时间:2015-03-21 11:10:44

标签: regex bash shell awk

我有以下脚本

#!/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

P.S。

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

1 个答案:

答案 0 :(得分:4)

你在这里正确的轨道,但是建立正则表达式的第二部分。您可以使用:

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

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