regex - Sed 和 Awk 转义 & 符号

标签 regex shell

我正在解析一个 PHP 文件并将函数原型(prototype)元素包装在 HTML 中。但是,如果有&符号,它会破坏我的代码。

输入 : function foo (&$var1, &$var2){...}//作为字符串
所需输出(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

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

问题隔离:而是按照我的意愿在浏览器中显示“g$var1”。但是,我试图得到一个 '&' 代替。
sub(/^&/, "g", param)

我的尝试:我使用了三个反斜杠,因为我认为 awk 会首先将其处理为 '\&',然后将其输入 sed,将 '\&' 解释为文字 '&'。不过,我尝试了 1 到 6 个反斜杠,但无济于事。

问题:我怎样才能逃脱&?

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

关于我正在尝试做的一些“元”/设计问题(不需要提问!!)
我有一堆 PHP 文件,我正在尝试为其生成一些文档(结构类似于 Javadocs)。我正在使用 REGEX 和 shell 脚本进行分析并分析它,以便列出函数名称、参数和返回项。到目前为止,我认为 REGEX 运行得很好,但我已经阅读了很多关于这是 REGEX 不应该用于的内容。我欢迎对此提出任何意见(文档通常是如何生成的?)。多谢你们!

最佳答案

我相信 HTML 是 &作为 & 字符。在您的 awk 脚本中,您可以使用:

sub(/^&/, "&", param)

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

关于regex - Sed 和 Awk 转义 & 符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17241725/

相关文章:

sql - 正则表达式/解析PostgreSQL名称

regex - 通过两个字符标记将字符串拆分为列

javascript - 如何使用 ruby​​ 中的 scan 或 match 函数提取 JS 变量?

linux - Bash:将 redis-benchmark 结果存储到 var 生成奇怪的字符串

docker - 我想在容器中打印 docker run 环境变量

Java 正则表达式匹配器显示意外结果

c# - 固定长度字符串的正则表达式,只允许末尾有空格。 C#

python - 源 shell 脚本并从 os.environ 访问导出的变量

linux - shell脚本中的文本处理

linux - "sh: line 1: Moved: command not found"使用 curl 安装 npm |嘘