我基本上想这样做:
cat file | grep '<expression>' | sed 's/<expression>/<replacement>/g'
无需编写两次表达式:
cat file | sed 's/<expression>/<replacement>/g'
有没有办法告诉sed不要打印与替换命令中的正则表达式不匹配的行?
发布于 2011-11-24 18:34:41
假设您有一个文件,其中包含您想要替换的文本。
$ cat new.text
A
B
如果您想将A更改为A,那么理想情况下,我们可以执行以下操作:
$ sed 's/A/a/' new.text
a
B
但是,如果您不希望获得不受替换影响的行,则可以使用n和p的组合,如下所示-
$ sed -n 's/A/a/p' new.text
a
发布于 2011-11-22 21:59:11
这可能对你有用:
sed '/<expression>/!d;s//<replacement>/g' file
或
sed 's/<expression>/<replacement>/gp;d' file
发布于 2011-11-22 19:14:11
cat file | sed -n '/<expression>/{s//<replacement>/g;p;}'
https://stackoverflow.com/questions/8225822
复制相似问题