sedreplace字符后的所有事件

使用sed是否有一种方法可以在一个字符后replace一行中所有出现的模式?

因此,例如,在完全停止之后用下划线replace每个空格将会改变这个:

 kick . the . baby 

进入这个:

 kick ._t_h_e_._b_a_b_y 

谢谢!

这可能适用于你(GNU sed):

 sed -r ':a;s/(\.[^ ]*) /\1_/;ta' file 

更换第一个空间的前面的空间._或s:

 sed 's/\./&\n/;h;y/ /_/;H;g;s/\n.*\n//' file 

用保持空间分而治之。

有点长,我想不到更短的路,但很好的工作:

 sed 'h ; s/[^.]*// ; s/ /_/g ; x ; s/\..*$// ; G ; s/\n//' ^ ^ the pattern to replace 

或者用awk

 awk -F. -vOFS=. '{a=$1 ; $1="" ; gsub(" ","_") ; print a $0}' ^ ^ the pattern to replace