Perl - это, вероятно, ваша лучшая ставка, но я бы не стал делать это за одно регулярное выражение (возможно, это даже невозможно). Я думаю, что это настолько короткий, насколько вы можете сделать сценарий, все еще делая его читабельным:
#!/usr/bin/perl
$link = 1;
while(<>) {
$link++ while( s/href="(?!link\d)[^"]*"/href="link$link"/ );
print;
}
Тогда назовите это так:
./thatScript.pl inputFile.html > newInputFile.html
Он проверяет каждую строку ввода и для каждого href="..."
находит, заменяет ее пронумерованной ссылкой и увеличивает номер ссылки. Существует также негативный взгляд на то, чтобы не заменять один и тот же href
непрерывно.
РЕДАКТИРОВАТЬ: Просто, черт возьми, вот как вы могли бы сжать вышесказанное в одну строку bash:
perl -pe '$link++ while( s/href="(?!link\d)[^"]*"/href="link$link"/ )' inFile.html > outFile.html
Это использует удивительный флаг -p
в Perl, как объяснено здесь .