gpt4 book ai didi

linux - 与作为变量传递到 awk 的正则表达式进行比较

转载 作者:太空宇宙 更新时间:2023-11-04 05:47:51 25 4
gpt4 key购买 nike

我创建了以下 awk 示例脚本以添加行 - “line 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 获得值 - “target”

最佳答案

不要使用 /var/(它只查找确切的字符串 var,而不查找由此命名的变量的内容),而是使用 ~ 运算符:

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

关于linux - 与作为变量传递到 awk 的正则表达式进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51731612/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com