如何删除sed中的第N个目标字(='remove_mark')?

时间:2016-12-01 09:46:39

标签: shell sed

我正在学习shell的sed。 我尝试了以下代码,

echo "one tworemove_markthree fourremove_markfive" | sed -E "s?(.*)remove_mark(.*)?\1\2?"

我预计这个输出是

one twothree fourremove_markfive

但上面代码的输出如下,

one tworemove_markthree fourfive

第一个remove_mark保留,但第二个删除。 但是我想删除第一个。怎么做?以及如何删除所有匹配的目标字?非常感谢你。

1 个答案:

答案 0 :(得分:1)

只需匹配remove_mark并替换为空。

示例

$ echo "one tworemove_markthree fourremove_markfive" | sed 's/remove_mark//'
one twothree fourremove_markfive

要删除所有目标,请使用g(全局)修饰符。

示例

$ echo "one tworemove_markthree fourremove_markfive" | sed 's/remove_mark//g'
one twothree fourfive