2016-07-05 40 views
3

使用sed是否有一種方法可以在字符後替換行上的所有模式?sed替換字符後的所有事件

所以,舉例來說,一個句號後更換以下劃線的每個空間將改變這一點:

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

到這一點:

k i c k ._t_h_e_._b_a_b_y 

謝謝!

+0

「寶貝」之間的點在哪裏?你的例子不夠清楚,無法說明你想要做什麼。 – HuStmpHrrr

+0

對不起,錯字!再見一次 –

+0

@NickBull在'.'之後的所有內容都應該有一個'_'的權利? –

回答

2

這可能會爲你工作(GNU SED):

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

_的向前更換第一.的空間或:

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

使用保持空間進行分割和征服。

+0

這是美麗的,布拉沃 –

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