У меня есть XML-файл, который я хочу извлечь все вхождения некоторого тега AB. Файл - одна длинная строка с ~ 500 000 символов.Соответствие sed regexp в длинной строке
Теперь я знаю о regexp и т. Д., Но когда я пробую его с помощью sed
и попытаюсь извлечь только символы из тегов, я полностью потерял результат :).
Вот моя команда:
sed -r 's/(.*)<my_tag>([A-Z][A-Z])<\/my_tag>(.*)/hello\2/g' myfile.out
преобразует весь файл только с "helloAB", например, Хотя ожидаемое должно содержать по меньшей мере 100 матчей.
Итак, я размышляю над концепциями жадного соответствия и таких, но не получаю нигде. Может быть, awk
- лучшая идея?
Биты '. *' Съедают все. Вероятно, это исправит проблему использования не жадной версии обоих экземпляров. – abiessu
Это работа для grep, а не sed. –
Для этого вам лучше всего использовать подходящую утилиту для анализа XML, поскольку XML не является обычным языком, поэтому регулярные выражения не являются лучшим инструментом для работы. Возможно, вам удастся выполнить простой анализ XML с помощью регулярных выражений, но, как вы можете видеть уже для этого простого случая, RE, который вам нужно использовать, даже здесь может немного запутаться ... – twalberg