将变量传递给上下文匹配 awk

将变量传递给上下文匹配 awk

我正在尝试从文件中提取awk从开始模式到结束模式的上下文。

以下是要重现的简化示例输入:

$ cat file
1
2
3
    
4
5
6

1当我按如下方式传递启动模式时,它会起作用:

$ awk '/1/,/^$/' file

1
2
3

但是当我传递一个变量作为启动模式时,我没有得到结果:

$ awk -v var=1 '/var/,/^$/' file

答案1

变量名在 awk 中不会在内部扩展//。因此,当您有时/var/,awk 将搜索 a ,v然后搜索 an a,然后搜索 an r。你想要的是:

$  awk -v var=1 '$0~var,/^$/' file
1
2
3

相关内容