0

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

my-company-review/</link>

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

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

在此先感谢您的帮助!

4

3 回答 3

0

这是一种方法:

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

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

于 2013-05-24T04:25:44.463 回答
0

您可以使用 awk:

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

或 perl:

perl -ne 's:/</link>:$./</link>:; print' infile
于 2013-05-24T04:27:05.497 回答
0

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

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 解决方案看起来好多了 =)

于 2013-05-24T04:28:09.270 回答