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位。非常好。第一行对我来说真的很好!谢谢:*非常好。第一行对我来说真的很好!谢谢各位:*