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

标签 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

附:

  1. /usr/bin/awk -v n="$num"'/chapter:/{f=0}/chapter: n/{f=1} f' $file 不起作用
  2. 我无法使用任何其他工具来实现此目的,因为 awk 是实现我想要做的事情最快的工具

有什么想法吗?

最佳答案

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

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

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

关于regex - 将 shell 参数传递给 awk 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29182018/

相关文章:

c# - 正则表达式拒绝逗号以外的特殊字符

python - 正则表达式匹配地址与子模式

javascript - 正则表达式精确匹配字符串中的多个字符串

xml - 使用 sed 替换 xml 标签

json - 如何使用 jq 创建增量索引

linux - 从终端提示中删除 "unset"

python - 如何精确匹配前一组包括不区分大小写?

大括号内的正则表达式(大括号)——gnu parallel/xargs/find

file - Shell追加字符串到文件空行问题

docker - 当 docker-compose run -e 调用我的环境时,Sed 在文件中