如果正则表达式匹配,nl 添加数字后缀?

如果正则表达式匹配,nl 添加数字后缀?

如果我有一个文本文件这样说:

Xgrep () { something ; }  

Xgrep
Xgrep
Xgrep
Xgrep
Xgrep

我希望它看起来像这样

Xgrep () { something ; }  

Xgrep 12
Xgrep 13
Xgrep 14
Xgrep 15
Xgrep 16

意思是我想选择从哪个数字开始,使用后缀而不是前缀,中间有一个空格(-s " "之间有一个空格)。我以为我可以用nl这个,但阅读手册页似乎并非如此。我试过这个:

nl -b pexpr=Xgrep -s " " ~/desktop/test.txt

然而这只是这样:

    Xgrep
    Xgrep
    Xgrep
    Xgrep
    Xgrep

这可能是因为正则表达式语法是错误的,但我找不到它匹配的方法,它只是列出了用法的所有其他方法。

这个网站几乎正是我想要做的,但是以命令行形式并且仅带有数字后缀。

答案1

% perl -ple 'BEGIN{$i=12} s/^(Xgrep)\s*$/"$1 ".$i++/e' < in
Xgrep () blah

Xgrep 12
Xgrep 13
Xgrep 14
Xgrep 15
Xgrep 16
Xgrep 17
% 

打印行,开始计数器,匹配 Xgrep 并将增加的数字添加到末尾。如果需要,替换< in为文件名并-i就地向破坏文件添加标志。解决方案awk可能看起来非常相似。

相关内容