首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何让sed删除替换不匹配的行

如何让sed删除替换不匹配的行
EN

Stack Overflow用户
提问于 2011-11-22 19:10:54
回答 4查看 15.3K关注 0票数 25

我基本上想这样做:

代码语言:javascript
复制
cat file | grep '<expression>' | sed 's/<expression>/<replacement>/g'

无需编写两次表达式:

代码语言:javascript
复制
cat file | sed 's/<expression>/<replacement>/g'

有没有办法告诉sed不要打印与替换命令中的正则表达式不匹配的行?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-11-24 18:34:41

假设您有一个文件,其中包含您想要替换的文本。

代码语言:javascript
复制
$ cat new.text 
A
B

如果您想将A更改为A,那么理想情况下,我们可以执行以下操作:

代码语言:javascript
复制
$ sed 's/A/a/' new.text 
a
B

但是,如果您不希望获得不受替换影响的行,则可以使用n和p的组合,如下所示-

代码语言:javascript
复制
$ sed -n 's/A/a/p' new.text 
a
票数 30
EN

Stack Overflow用户

发布于 2011-11-22 21:59:11

这可能对你有用:

代码语言:javascript
复制
sed '/<expression>/!d;s//<replacement>/g' file

代码语言:javascript
复制
sed 's/<expression>/<replacement>/gp;d' file
票数 18
EN

Stack Overflow用户

发布于 2011-11-22 19:14:11

代码语言:javascript
复制
cat file | sed -n '/<expression>/{s//<replacement>/g;p;}'
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8225822

复制
相关文章

相似问题

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