Как я заменяю' <p>'' <p> \n' и' </p>' с '\n </p>' использующий sed?

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

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

<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

2 ответа

Можно сделать:

$ sed 's/<p>/&\n/g;s/<\/p>/\n&/g' file 
<p>
This is home.
</p>
<p>
These are fruits.
</p>

& на правой стороне оператора замены расширен до того, что было подобрано левой стороной. Так, в s/<p>/&\n/, & будет расширен до <p> и в s/<\/p>/\n&/, это будет расширено до </p>. g (s///g) делает sed замена все случаи, таким образом, она будет также работать, если у Вас будет больше чем один <p> или </p> на одной строке.

4
ответ дан 3 December 2019 в 06:39

Используя 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
ответ дан 3 December 2019 в 06:39

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

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