String sed:获取每个匹配行中的最后n个字符

String sed:获取每个匹配行中的最后n个字符,string,sed,String,Sed,我有一个这样的文件: bla bla bla telephonenumber: 497621160119286 y y y xxxx telephonenumber: 4160119100 xxxx blabla telephonenumber: 160119126 sed '^telephonenumber:/s/^.*/(.\{4\}\)$/1\' givenfile 我需要将给定文件更改为: bla bla bla telephonenumber: 9286

我有一个这样的文件:

bla bla bla 
telephonenumber: 497621160119286
y y y    
xxxx   
telephonenumber: 4160119100
xxxx   
blabla 
telephonenumber: 160119126
sed '^telephonenumber:/s/^.*/(.\{4\}\)$/1\' givenfile
我需要将给定文件更改为:

bla bla bla 
telephonenumber: 9286
y y y    
xxxx   
telephonenumber: 9100
xxxx   
blabla 
telephonenumber: 9126
基本上,只需在匹配行中获取数字的列表4个字符

我想出了这样的办法:

bla bla bla 
telephonenumber: 497621160119286
y y y    
xxxx   
telephonenumber: 4160119100
xxxx   
blabla 
telephonenumber: 160119126
sed '^telephonenumber:/s/^.*/(.\{4\}\)$/1\' givenfile
您可以尝试以下方法:

sed 's/^\(telephonenumber: \).*\([0-9]\{4\}\)$/\1\2/' file
或者使用扩展正则表达式

sed -r 's/^(telephonenumber: ).*([0-9]{4})$/\1\2/'
有两个捕获组<代码>\1指的是您的搜索模式,
\2
只匹配数字的最后4位。

您可以尝试以下方法:

sed 's/^\(telephonenumber: \).*\([0-9]\{4\}\)$/\1\2/' file
或者使用扩展正则表达式

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

有两个捕获组<代码>\1指的是您的搜索模式,
\2
只匹配数字的最后4位。

非常好。第一行对我来说真的很好!谢谢:*非常好。第一行对我来说真的很好!谢谢各位:*