Sed和Awk逃离&符号(&)

bob*_*e93 5 regex shell

我正在解析PHP文件并在HTML中包装函数原型元素.但是如果有&符号,则会破坏我的代码.

输入:function foo (&$var1, &$var2){...}// as String
Desired输出(在HTML中):&$var1, &$var2 //基本上,只输出变量,以便它们在浏览器中正确显示

现在,我将每个变量发送到awk的子方法1,然后发送到sed.

sub(/^&/, "\\\&", param)  #param is the variable of interest (e.g. &$var1)

#Intermediate step in case it's relevant. The awk-processed elements 
#are sent to ${file}_param.txt. Each set of parameters are delimited by colons.
param=$(cut -d: -f$counter ${file}_param.txt) 

#Replace some default text in template file with real stuff.
sed -i "s|@PARAM|$param|1" "$base"_funct_def.txt
Run Code Online (Sandbox Code Playgroud)

输出我得到:正在解释&符号.整场比赛被替换.

隔离问题:执行以下操作会在浏览器中显示"g $ var1",如我所愿.但是,我正在努力获得'&'.

sub(/^&/, "g", param)
Run Code Online (Sandbox Code Playgroud)

我尝试:我用三个反斜杠,因为我认为AWK会先处理成"\&"的,送入sed的,将其解释"\&"为文本"&".我尝试了1到6个反斜杠,但无济于事.

问题:如何逃避&?

1个手册: http://www.staff.science.uu.nl/~oostr102/docs/nawk/nawk_92.html


关于我正在尝试做什么的一些"元"/设计问题(不需要问题!)
我有一堆PHP文件,我正在尝试生成一些文档(结构像Javadocs).我正在使用REGEX和shell脚本进行解析,以便列出函数名称,参数和返回项目.到目前为止,我认为REGEX已经很好地完成了,但我已经阅读了很多关于这是如何不应该使用REGEX的内容.我欢迎任何有关此问题的评论(通常如何生成文档?).多谢你们!

gbr*_*ner 0

我相信 HTML 读&作“&”字符。在你的 awk 脚本中你可以使用:

sub(/^&/, "&", param)
Run Code Online (Sandbox Code Playgroud)

美元符号param需要用反斜杠转义,例如 &$var 需要写成 &\$var,否则 sed 和 awk 会尝试将 $var 展开为变量。