Мой XML-файл выглядит так:

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

Мне нужно, чтобы это было так:

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

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

2 ответа2

2

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

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

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

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

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

1

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

Быстрый и грязный скрипт на awk

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .