perl -pwe 's/<p\s+\Kclass-"foo">/ $i++; qq(id="$i">) /e' yourfile
\K
используется для хранения того, что предшествует, что удобно в этом случае.Использование замены, которая оценивается и содержит несколько (два) операторов, также удобно, чтобы избежать объединения и усложнения цитирования.Вставляется только возвращаемое значение всего оператора, т.е. последний оператор.
Когда вы опробовали его и хотите изменить файлы, вы можете просто добавить параметр -i
.Я бы рекомендовал использовать резервные копии, например, так:
perl -i.bak -pwe '....etc'
(Резервное копирование в filename.ext.bak
)