当两个感叹号“!”之间出现空格时,我正在尝试删除空格。
例如,我尝试过:
echo 'this is ! a repeated ! ! ! ! character ! ! ! here ! !' | sed 's/! !/!!/g'
所需的输出将是:
this is ! a repeated !!!! character !!! here !!
但是我得到了这个:
this is ! a repeated !! !! character !! ! here !!
一种方法是重复执行sed
命令,但实际上我可以有任意数量的'!'。在我的输入中,我想不出一种干净的方法来做到这一点。
答案 0 :(得分:3)
使用Perl的环顾断言:
perl -pe 's/!\s+(?=!)/!/g'
(?=!)
的意思是“后跟一个感叹号,但不要在匹配的字符串中包含感叹号,并在它之前 之前开始下一个匹配”。
答案 1 :(得分:2)
使用sed
可以循环播放:
echo 'this is ! a repeated ! ! ! ! character ! ! ! here ! !' |
sed -e :a -e 's/! !/!!/g;ta'
this is ! a repeated !!!! character !!! here !!