如何在每一行中添加新号码?

时间:2013-05-24 04:21:55

标签: perl shell command-line command

我的文件backup.xml中有大约500行

my-company-review/</link>

有没有办法通过命令行,perl等在单词review之后的行中添加一个数字。例如,像这样:

my-company-review1/</link>
my-company-review2/</link>
my-company-review3/</link>

提前感谢您的帮助!

3 个答案:

答案 0 :(得分:0)

这是一种方式:

perl -i -wpe ' BEGIN { $count = 1; }
               ++$count
                 if s{(my-company-review)(/</link>)}{$1$count$2};
             ' backup.xml

(免责声明:未经测试。)

答案 1 :(得分:0)

您可以使用awk:

awk 'gsub("/</link>", NR "/</link>")' infile

或perl:

perl -ne 's:/</link>:$./</link>:; print' infile

答案 2 :(得分:0)

为什么不使用Perl,正如我在你的上一个问题上所建议的那样。再一次,这是一种破解解决方案,只有在每行最多一次更换时才有效......但这是一个快速丢弃程序。

perl -e '$count=1; foreach (<>) { s/(my-company-review)(\/<\/link>)/$1$count$2/ && $count++; print; }'

额外的循环将在一行上进行多次替换:

perl -e '$count=1; foreach (<>) { while(s/(my-company-review)(\/<\/link>)/$1$count$2/) {$count++;} print; }'

awk解决方案看起来更好=)