2016-12-06 69 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

相关问题