2012-09-27 70 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' 那我想要原样离开。 –