Если вы хотите проанализировать XML, используйте специальный XML-анализатор, например Saxon .
Если вы хотите проанализировать странный текстовый файл с забавными несвязанными угловыми скобками, попробуйте это:
#! /bin/sed -nf
s/^<IdSuscriptor>\([0-9]\+\)<\/IdSuscriptor>/\1,/
t match1
b next
: match1
h
b
: next
s/^<ReferenciaConsulta>\([^ ]\+\) \([^ ]\+\) [0-9]\+<\/ReferenciaConsulta>/\1,\2,/
t match2
b
: match2
H
g
s/\n//
p
Объяснение
t
переходит на match1
, если предыдущая команда s
произвела замену. В противном случае b
переходит на next
.
В случае совпадения h
копирует совпадающую строку в область удержания и b
останавливает обработку текущей строки.
Вторая команда s
работает так же с той разницей, что в случае отсутствия совпадения b
продолжается со следующей строки.
В случае второго совпадения H
добавляет пространство образца к пространству удержания, g
копирует пространство удержания в пространство образца, s
удаляет новую строку между двумя совпадениями, а p
печатает результат .
Заключение
Если вы не знаете, как это сделать с sed
, не пробуйте. Попробуйте выучить настоящий язык программирования, такой как Perl, JavaScript или Python. sed
- пережиток былых времен.