0

私のファイルbackup.xmlにこの行が約500回あります

my-company-review/</link>

コマンドライン、perlなどを使用して、単語の後に番号を行に追加する方法はありますかreview. たとえば、次のようなものです。

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

助けてくれてありがとう!

4

3 に答える 3

0

awkを使用できます:

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

またはパール:

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

前回の問題で提案したように、Perl を使用しないのはなぜですか。繰り返しますが、これは一種のハック ソリューションであり、行ごとに最大 1 つの置換がある場合にのみ機能します... しかし、これは簡単な使い捨てプログラムです。

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

追加のループは、1 行で複数の置換を行います。

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

その awk ソリューションはずっと良く見えます =)

于 2013-05-24T04:28:09.270 に答える
0

1 つの方法を次に示します。

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

(免責事項:テストされていません。)

于 2013-05-24T04:25:44.463 に答える