2012-09-27 101 views
0

說我有這兩條線:SED刪除最後4個字符

blah:20030717.abc 
blah:20040714 

使用SED,我怎麼能在兩個行開始匹配,只有結束 - ^blah.*abc$ - 並刪除最後4個字符?

我試圖

sed 's/\(^blah.*\)\(.\{4\}$\)/\1/g' 

,但同樣去除4個字符關閉其他線。

blah:20030717 
blah:2004 

sed 's/\(^blah.*abc$\)\(.\{4\}$\)/\1/g' 

不會改變任何東西。

+2

怎麼樣'sed的「S/\(^等等* \)\(\ .. \ {3 \} $ \)/ \ 1/g''? –

回答

4

爲什麼你不只是做

sed 's/\.abc$//g' 

,因爲你已經知道 4個字符要刪除?

或者,如果你只是想做到這一點在與blah:啓動線,

sed 's/^\(blah.*\)\.abc$/\1/g' 

或者,如果你的問題是「我如何點後刪除任何最後三個字符,如果行啓動與blah:「:

sed 's/^\(blah.*\)\..\{3\}$/\1/g' 
+0

我想'abc'只是一個例子。 –

+0

@ tim-pietzcker 太快了哇!謝謝。你的第二個例子是完美的 'sed's/^ \(blah。* \)\。abc $/\ 1/g'' 因爲我也可能有一行 'blah:20050723.cba' 那我想要原樣離開。 –