У меня есть следующий файл, и я хочу заменить <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>
Можно сделать:
$ 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>
на одной строке.
Используя 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>