Добавьте новую строку после каждого XML-тэга

Мой XML-файл похож на это:

<price = "2.22"><instock = "1">

У меня должен быть он как этот:

<price = "2.22">
<instock = "1">

После каждого">" символ я должен поместить символ новой строки с awk или sed. Как я могу выполнить это?спасибо

0
задан 20.09.2010, 16:01

2 ответа

Как KeithB заявил, существуют потенциальные проблемы, которые могут явиться результатом использования сырого подхода. Однако этот сырой подход является крошечным битом, более выборочным так, чтобы возможности, которые он приведет к сбою, были уменьшены приблизительно на 0,00001%, которые могут быть достаточно.

sed 's|><|>\n<|g' inputfile

Если может быть пробел между угловыми скобками, то это может быть лучше:

sed 's|>[[:space:]]*<|>\n<|g' inputfile

который устранит тот пробел.

2
ответ дан 24.11.2019, 04:38

Если Вы хотите сделать это правильно, Вам нужно что-то более мощное, чем awk. Одной из проблем является awk, не обработает > в строках или комментариях. Вы могли бы быть более обеспечены с жемчугом или Python. Если это должно только сделать файл легче посмотреть на визуально, он мог бы быть прекрасным.

Быстрый и грязный awk сценарий

 awk '{for(i=1; i<= NF-1; i++) printf "%s>\n",$i}' FS='>'

Это рассматривает > как разделитель между полями, и распечатывает каждого на его собственной строке. Его довольно сырым, но могло бы быть стартовое место.

1
ответ дан 24.11.2019, 04:38

Теги

Похожие вопросы