我有一堆没有换行的HTML。我想在任何</p>
标记之后添加一个或两个换行符。
我认为这会做到,但它似乎没有添加空行:
echo "<p>first line of text</p><p>second line of text</p>" | sed 's:</p>:</p>\n:g' > file.html
答案 0 :(得分:1)
我不确定这对你有用,但是有点太长(并且需要格式化)才能发表评论。您可以尝试在命令行中输入实际的换行符,方法是点击 ENTER 并加上反斜杠,告诉sed
继续下一行:
echo "<p>first line of text</p><p>second line of text</p>" | sed 's:</p>:</p>\
:g' > file.html
答案 1 :(得分:0)
这不起作用,因为非GNU版本的sed
不支持\n
。解决这个问题的一个聪明方法是在将它提供给sed之前使用bash
shell为您展开它。只要您使用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>
答案 2 :(得分:0)
sed版本对我不起作用,我也在OS X上工作.awk工作:
echo "<p>first line of text</p><p>second line of text</p>" |
awk '{gsub(/<\/p>/,"</p>\n");print $0;}'
答案 3 :(得分:0)
当您需要操纵行结尾时,请尝试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'