如何获取以下awk脚本以传递whoami
的用户名结果以存储在变量中,然后调用以使用awk搜索该文本。我似乎能够传递$ myCount而不是$ myUser
myUser=$(whoami)
myCount=6
awk -v count=$myCount -v Bob=$myUser '/"tg-6k2t".*Bob/{x=count}x--==1{sub(/tg-6k2t/,"tg-b5xm")}1' file
答案 0 :(得分:2)
传递值不是你的问题,尝试在常量正则表达式中引用它。在命令行列表中设置-v user="$myUser"
,就像设置count
并更改:
/"tg-6k2t".*Bob/
为:
$0 ~ ("\"tg-6k2t\".*" user)
parens并非绝对必要,只是为了提高可读性。您需要添加$0 ~
,因为条件上下文中的regexp文字/foo/
是$0 ~ /foo/
的简写,但条件上下文中的"foo"
只是一个测试,看看是否一个字符串不是null,你需要明确$0 ~ "foo"
使它成为$ 0与动态正则表达式的正则表达式比较。
您可能需要考虑将整个脚本参数化:
awk -v count="$myCount" -v user="$myUser" -v old='tg-6k2t' -v new='tg-b5xm' '
$0 ~ ("\"" old "\".*" user){x=count} x--==1{sub(old,new)} 1
' file