LINUX.ORG.RU

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

 ,


0

1

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

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


Ответ на: комментарий от slovazap

Весьма признателен за ответ. А можно ссылку на доку где это описано? Я не совсем понимаю куда эту конструкцию вставить. Пока далеко не гуру в данном вопросе.

tn-s ()
Ответ на: комментарий от slovazap

Благодарю. Чуть ранее там нашел это. Единственно пришлось подумать что с этим делать и действительно догадался обернуть! Благодарю. примерно раз в 10 сократилось время обработки.

tn-s ()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.