LINUX.ORG.RU

Сообщения tn-s

 

sed - ускорить обработку файла

Добрый день. Такая задача.

Имеется достаточно большой 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, что поиск нужно проводить только в строках которые к примеру начинаются с определенной последовательности символов, которая всегда постоянна, а остальные строки переписывать как есть?

 ,

tn-s
()

RSS подписка на новые темы