2016-12-06 64 views
0

,所以我有一個這樣的文件:sed的:獲得最後n個字符在每一個匹配的行

bla bla bla 
telephonenumber: 497621160119286 
y y y  
xxxx 
telephonenumber: 4160119100 
xxxx 
blabla 
telephonenumber: 160119126 

我需要改變給定的文件到:

bla bla bla 
telephonenumber: 9286 
y y y  
xxxx 
telephonenumber: 9100 
xxxx 
blabla 
telephonenumber: 9126 

基本上只是獲取列表在匹配的行數的4字符

我想通了,這樣的事情:

sed '^telephonenumber:/s/^.*/(.\{4\}\)$/1\' givenfile 

回答

3

你可以試試這個:

sed 's/^\(telephonenumber: \).*\([0-9]\{4\}\)$/\1\2/' file 

或使用正則表達式擴展

sed -r 's/^(telephonenumber:).*([0-9]{4})$/\1\2/' 

有2個捕捉組。 \1引用您的搜索模式,而\2只匹配數字的最後4位數字。

+0

非常好。第一行非常適合我!謝謝:* – JMAD2016

相關問題