unix - 在每个 </p> 之后添加换行符

标签 unix command-line sed

我有一堆没有换行符的 html。我想在任何 </p> 之后添加一两个换行符标签。

我认为这可以做到,但它似乎没有添加空行:

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

最佳答案

这不起作用,因为非 GNU 版本的 sed 不支持 \n。解决这个问题的一个聪明方法是在将其交给 sed 之前使用 bash shell 来扩展它。只要您使用 bash 作为解释器,这应该适用于 sed 的所有版本

$ 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>

关于unix - 在每个 </p> 之后添加换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9425020/

相关文章:

unix - 为什么 #!/bin/ksh 是 shell 脚本中的第一行

unix - 如何在UNIX ....中创建新的环境变量?

unix - nginx 错误连接到 php5-fpm.sock 失败 (13 : Permission denied)

command-line - 为什么我的命令提示符在 Windows 10 上卡住?

regex - 从二进制文件中提取字符串 - 正则表达式问题

bash - 有没有一种更简洁的方法来获取每行的最后 N 个字符?

Bash 命令从日志文件中获取开始时间和结束时间

ubuntu - 如何修复 IntelliJ IDEA 安装错误?

mysql - 在命令行中上传 .sql 文件时出现语法错误

bash - sed 不替换行