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

时间:2016-12-06 10:03:26

标签: string sed

所以我有一个这样的文件:

 routes.MapRoute(
                name: "",
                url: "",
                defaults: new
                {

                });

我需要将给定文件更改为:

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

基本上只需获取匹配行中数字的4个字符

我想出了类似的东西:

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

1 个答案:

答案 0 :(得分:3)

你可以试试这个:

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

或使用扩展正则表达式

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

有2个捕获组。 \1指的是您的搜索模式,而\2仅匹配该数字的最后4位数字。