长话短说,我想删除一个带有相应空格的单词
需要:
abc test test def
- > abc def
可是:
abc xtest xtest def
- > abc xtest xtest def
(请记住)
我试过了:
$ echo "abc test test def" | sed "s/\s\<test\>\s/ /g"
abc test def
所以,如果我将这个正则表达式应用2次,我将得到我需要的东西。但有没有办法在没有 sed 循环的情况下如何做到这一点?
答案 0 :(得分:2)
echo "abc test test def" | sed "s/\s\(\<test\>\s\)*/ /g"
=&gt; abc def
echo "abc test test def test " | sed "s/\s\(\<test\>\s\)*/ /g"
=&gt; abc def
这会查找空格\s
,后跟可能重复的小组\<test\>\s
通过寻找一个重复次数不确定的组,我们可以处理只有一个test
的情况,并处理相邻test test
的特殊情况。