Добрый день. Такая задача.
Имеется достаточно большой xml файл в котором некоторые строки содержат вхождения которые нужно заменить. Вхождения в строках всегда разные и соответственно есть файл содержащий перечень этих замен оформленный в файл команд sed. В целом это выглядит так:
sed -f change.txt in.xml > out.xml
change.txt содержит такие команды:
- s/«161497»/«s61127»/
- s/«161513»/«s61143»/
- s/«161498»/«s61128»/
Таких строк более 20 000.
in.xml содержит порядка 50 000 строк и только примерно 6 000 из них имеют вхождения для замены. Строки в которых есть вхождения для замены всегда начинаются с одной и той же последовательности символов. Сам по себе файл постоянно обновляется, поэтому вхождения не постоянны и изменяются в пределах этих 20 000 замен. На сколько я понимаю sed прогоняет каждую строку через файл команд, что достаточно замедляет работу. В данном случае получается около 44 000 холостых прогонов. Как указать SED, что поиск нужно проводить только в строках которые к примеру начинаются с определенной последовательности символов, которая всегда постоянна, а остальные строки переписывать как есть?