如果我有一个文本文件这样说:
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
可能看起来非常相似。