Bash 如何用变量替换awk命令的一部分?
我有下面的Bash 如何用变量替换awk命令的一部分?,bash,shell,awk,scripting,Bash,Shell,Awk,Scripting,我有下面的awk命令可以工作 awk 'BEGIN{RS="</a>"; ORS=RS"\n"} /<p>Test2<\/p>/' file 如上所述,我在脚本中使用此命令,因此我尝试直接使用脚本变量替换,但也没有成功 AWK_SEARCH="Test2" awk 'BEGIN{RS="</a>"; ORS=RS"\n"} /<p>${AWK_SEARCH}<\/p>/' file AWK_SEARCH=“Test2”
awk
命令可以工作
awk 'BEGIN{RS="</a>"; ORS=RS"\n"} /<p>Test2<\/p>/' file
如上所述,我在脚本中使用此命令,因此我尝试直接使用脚本变量替换,但也没有成功
AWK_SEARCH="Test2"
awk 'BEGIN{RS="</a>"; ORS=RS"\n"} /<p>${AWK_SEARCH}<\/p>/' file
AWK_SEARCH=“Test2”
awk'BEGIN{RS=”“;ORS=RS“\n”}/${awk\u SEARCH}/'文件
非常感谢您的帮助。您需要“取消引用”脚本变量:
#!/bin/bash
AWK_SEARCH="Test2"
awk 'BEGIN{RS="</a>"; ORS=RS"\n"} /<p>'"${AWK_SEARCH}"'<\/p>/' file
#/bin/bash
AWK_SEARCH=“Test2”
awk'BEGIN{RS=”“;ORS=RS“\n”}/”${awk_SEARCH}“/'文件
它是在脚本变量之前“停止”awk引号,将脚本变量用双引号括起来,然后在脚本变量之后“继续”awk引号(至少我是这么认为的)。您需要“取消”脚本变量:
#!/bin/bash
AWK_SEARCH="Test2"
awk 'BEGIN{RS="</a>"; ORS=RS"\n"} /<p>'"${AWK_SEARCH}"'<\/p>/' file
#/bin/bash
AWK_SEARCH=“Test2”
awk'BEGIN{RS=”“;ORS=RS“\n”}/”${awk_SEARCH}“/'文件
它是在脚本变量之前“停止”awk引号,将脚本变量用双引号括起来,然后在脚本变量之后“继续”awk引号(至少我是这么认为的)。这可能就是您想要的:
var="test2"; #dynamic content, you can set it to "$1" and pass the value as
#argument to script
awk -v awk_var="$var" '
BEGIN{RS="</a>"; ORS=RS"\n"}
$0 ~ "<p>"awk_var"</p>"' 37095194.txt
var=“test2”#动态内容,您可以将其设置为“$1”,并将值作为
#脚本的参数
awk-v awk_var=“$var””
开始{RS=”“;ORS=RS“\n”}
$0~““awk_var”“'37095194.txt
这可能就是您想要的:
var="test2"; #dynamic content, you can set it to "$1" and pass the value as
#argument to script
awk -v awk_var="$var" '
BEGIN{RS="</a>"; ORS=RS"\n"}
$0 ~ "<p>"awk_var"</p>"' 37095194.txt
var=“test2”#动态内容,您可以将其设置为“$1”,并将值作为
#脚本的参数
awk-v awk_var=“$var””
开始{RS=”“;ORS=RS“\n”}
$0~““awk_var”“'37095194.txt
awk-v tgt=“Test2”开始{RS=”“;ORS=RS”\n;tgt=“”tgt”“}$0~tgt”文件
修改BEGIN部分中的变量比在每个输入行连接然后测试字符串一次要高效得多。”}$0~tgt”文件
在BEGIN部分修改变量比在每个输入行连接然后测试字符串一次要高效得多。@John1024:谢谢!更正:D@John1024:谢谢你!更正:DNo。永远不要这样做。错误的方法是100%错误的,因为它在awk解释器看到它之前将shell变量的值扩展为awk脚本文本的一部分,这可能会导致各种各样的神秘失败,因为该shell变量的可能值。看,不。永远不要这样做。错误的方法是100%错误的,因为它在awk解释器看到它之前将shell变量的值扩展为awk脚本文本的一部分,这可能会导致各种各样的神秘失败,因为该shell变量的可能值。请参阅。如果您导出AWK_搜索
,那么在AWK中您可以使用环境[“AWK_搜索”]
,但是@EdMorton的答案是一种更好的方法。如果您导出AWK_搜索
,那么在AWK中您可以使用环境[“AWK_搜索”]
,但是@EdMorton的答案是一种更好的方法。