Как заменить '& lt; p & gt;' с '& lt; p & gt; \ n' и '& lt; / p & gt;'; с '\ n & lt; / p & gt;' используя sed?

У меня есть следующий файл, и я хочу заменить <p> на <p>\n и </p> на \n</p> с помощью sed.

Мой входной файл содержит следующие строки: [!d1 ]

<p>This is home.</p>
<p>These are fruits.</p>

Мой выходной файл должен быть как файл, указанный ниже.

<p>
This is home.
</p>
<p>
These are fruits.
</p>
1
задан 30 March 2016 в 19:28

1 ответ

Использование sed:

$ cat file.txt 
<p>This is home.</p>
<p>These are fruits.</p>

$ sed -r 's/^([^>]+>)([^<]+)(<.*)/\1\n\2\n\3/' file.txt 
<p>
This is home.
</p>
<p>
These are fruits.
</p>
1
ответ дан 23 May 2018 в 12:29
  • 1
    Обратите внимание, что это не сработает, если в строке будет несколько наборов <p> и </p>, а также сбой, если между <p> и </p> есть другие теги HTML. Например <p>one paragraph,<br> two lines</p>. Наконец, он заменит любой тэг , который находится в начале строки с самим собой и с новой линией. – terdon♦ 30 March 2016 в 14:26
  • 2
    @terdon Эй, гуру. это было просто для того, чтобы ответить на самый пример. Форматирование XML с использованием sed - это плохая идея. – heemayl 30 March 2016 в 14:27

Другие вопросы по тегам:

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