2016-07-05 10 views
3

sedを使用すると、文字の後の1行にあるパターンのすべての文字を置き換えることができますか?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

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と:これは(GNUのSED)あなたのために働くかもしれない

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