sed替换字符后的所有匹配项

时间:2016-07-05 12:19:46

标签: linux replace sed

使用sed有没有办法在字符后的一行上替换所有出现的模式?

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

k i c k . t h e . b a b y

进入这个:

k i c k ._t_h_e_._b_a_b_y

谢谢!

2 个答案:

答案 0 :(得分:2)

这可能适合你(GNU sed):

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

将第一个.前面的空格替换为_' s 或者:

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

使用保留空间划分和征服。

答案 1 :(得分:1)

有点长,我想不出更短的路,但效果很好:

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