我正在学习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保留,但第二个删除。 但是我想删除第一个。怎么做?以及如何删除所有匹配的目标字?非常感谢你。
答案 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