私のファイルbackup.xmlにこの行が約500回あります
my-company-review/</link>
コマンドライン、perlなどを使用して、単語の後に番号を行に追加する方法はありますかreview
. たとえば、次のようなものです。
my-company-review1/</link>
my-company-review2/</link>
my-company-review3/</link>
助けてくれてありがとう!
私のファイルbackup.xmlにこの行が約500回あります
my-company-review/</link>
コマンドライン、perlなどを使用して、単語の後に番号を行に追加する方法はありますかreview
. たとえば、次のようなものです。
my-company-review1/</link>
my-company-review2/</link>
my-company-review3/</link>
助けてくれてありがとう!
awkを使用できます:
awk 'gsub("/</link>", NR "/</link>")' infile
またはパール:
perl -ne 's:/</link>:$./</link>:; print' infile
前回の問題で提案したように、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 ソリューションはずっと良く見えます =)
1 つの方法を次に示します。
perl -i -wpe ' BEGIN { $count = 1; }
++$count
if s{(my-company-review)(/</link>)}{$1$count$2};
' backup.xml
(免責事項:テストされていません。)