Добавляйте разрыв строки после каждого </p> - PullRequest
1 голос
/ 24 февраля 2012

У меня есть куча html, у которой нет разрывов строк.Я хотел бы добавить разрыв строки или два после любого тега </p>.

Я думал, что это сделает это, но, похоже, он не добавляет пустых строк:

echo "<p>first line of text</p><p>second line of text</p>" | sed 's:</p>:</p>\n:g' > file.html

Ответы [ 4 ]

1 голос
/ 24 февраля 2012

Я не уверен, что это будет работать для вас, но это слишком долго (и должно быть отформатировано), чтобы добавить комментарий.Вы можете попробовать ввести фактическую новую строку в командной строке, нажав ENTER и введя обратную косую черту, чтобы sed продолжил следующую строку:

echo "<p>first line of text</p><p>second line of text</p>" | sed 's:</p>:</p>\
:g' > file.html
0 голосов
/ 24 февраля 2012

Попробуйте perl вместо sed, когда вам нужно манипулировать окончаниями строк. Простой скрипт sed, подобный этому, можно дословно перенести в perl -pe, и он волшебным образом начнет работать:

echo "<p>first line of text</p><p>second line of text</p>" | perl -pe 's:</p>:</p>\n:g'
0 голосов
/ 24 февраля 2012

версия sed не работает для меня, и я также на OS X. awk работал:

echo "<p>first line of text</p><p>second line of text</p>" | 
awk '{gsub(/<\/p>/,"</p>\n");print $0;}'
0 голосов
/ 24 февраля 2012

Это не работает, потому что не-GNU версия sed не поддерживает \n. Разумный способ обойти это - использовать оболочку bash, чтобы развернуть ее перед тем, как передать ее в sed. Это должно работать для всех версий sed, если вы используете bash в качестве интерпретатора

$ sed $'s:</p>:&\\\n:g' <<<'<p>first line of text</p><p>second line of text</p>'
<p>first line of text</p>
<p>second line of text</p>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...