与作为变量传入awk的正则表达式进行比较

时间:2018-08-07 16:37:20

标签: linux bash shell awk

我创建以下awk示例脚本以添加行-“第1行” 在“ 目标

行之后

我们将变量var =“ target ”设置为在awk中导出值目标,

但是当我们运行脚本时,似乎awk无法读取 var

中的值

awk脚本:

[root@master tmp]# more test.bash
#!/bin/bash


awk -v var="target" '1; done != 1 && /var/ {
                print "line 1"
                done = 1
                }' file

文件:

[root@master tmp]# more file


target

运行脚本时,我们得到:

[root@master tmp]# ./test.bash


target

预期结果应为

target
line 1

我很高兴知道awk语法有什么问题,

以及如何修复它,以便awk中的var将获得值-“目标”

1 个答案:

答案 0 :(得分:0)

使用/var/运算符代替var(仅查找确切的字符串~,而不查找这样命名的变量的内容):

awk -v var="$target" '
1 { print }
done != 1 && $0 ~ var { print "line 1"; done=1 }
' file