【发布时间】:2019-06-07 08:52:18
【问题描述】:
我正在尝试使用 gnu sed 4.7 来转义两种文本模式之间的所有 & 字符。怎么办?
这是我的目标:
之前:
some&words& things& stuff###&this & area&is&what&should&change###more&text
之后:
some&words& things& stuff###\&this \& area\&is\&what\&should\&change###more&text
这是在 Linux 服务器上,从 bash 终端启动 gnu sed 4.7。
sed -i -e "s/\(###\)\(.*\)\&\(.*\)\(###\)/\1\2\\\&\3\4/g" file.txt
以上行没有转义任何& 字符。
【问题讨论】:
-
您也可以使用 Perl 解决方案吗?
-
我也不知道如何使用纯正则表达式来做到这一点。如果你用###分割字符串,用一个简单的正则表达式处理中间部分,然后用###再次加入,得到你想要的结果,这很容易。至少如果你不坚持 sed 的话,使用 Perl 很容易......
-
我希望允许仅使用标准 Linux 安装中的基本包执行此代码。但如果没有其他办法,Perl 解决方案肯定比没有好。
-
没有所谓的“标准 Linux 安装”。另外,哪个 Linux 发行版不打包 perl?
标签: sed