首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用sed转义字符

使用sed转义字符
EN

Stack Overflow用户
提问于 2019-06-07 08:00:00
回答 2查看 155关注 0票数 2

我正在尝试使用gnu sed 4.7来转义两种文本模式之间的所有&字符。我们该怎么做呢?

这是我的目标:

之前:

代码语言:javascript
运行
复制
some&words& things& stuff###&this & area&is&what&should&change###more&text

之后:

代码语言:javascript
运行
复制
some&words& things& stuff###\&this \& area\&is\&what\&should\&change###more&text

这是在Linux服务器上,从bash终端启动gnu sed 4.7。

代码语言:javascript
运行
复制
sed -i -e "s/\(###\)\(.*\)\&\(.*\)\(###\)/\1\2\\\&\3\4/g" file.txt

上面的代码行没有转义任何&字符。

EN

Stack Overflow用户

发布于 2019-06-07 08:43:45

这让我觉得这是awk的工作:

代码语言:javascript
运行
复制
awk 'BEGIN {FS = OFS = "###"} {gsub(/&/,"\\\\&",$2)} 1' file

或者将文件保存在原地,就像sed -i一样:

代码语言:javascript
运行
复制
gawk -i inplace 'BEGIN {FS = OFS = "###"} {gsub(/&/,"\\\\&",$2)} 1' file

为了处理@melpomene的有效注释,awk程序变得有点冗长:

代码语言:javascript
运行
复制
gawk -i inplace '
    BEGIN {FS = OFS = "###"} 
    {for (i=2; i<NF; i+=2) { gsub(/&/,"\\\\&",$i) }} 
    1
' file
票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56486455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档