【发布时间】:2021-05-21 06:18:53
【问题描述】:
我正在编写一个可以解析 HTML 文档的脚本。我想删除两行,sed 如何使用换行符?我试过了
sed 's/<!DOCTYPE.*\n<h1.*/<newstring>/g'
这没有用。我试过这个语句,但它删除了整个文档,因为它似乎删除了所有换行符:
sed ':a;N;$!ba;s/<!DOCTYPE.*\n<h1.*\n<b.*/<newstring>/g'
有什么想法吗?也许我应该使用 awk?
【问题讨论】:
-
第二个删除尽可能多的文本,包括换行符,因为
.*是“贪婪的”(POSIX 正则表达式不支持惰性/非贪婪量词)并且.匹配任何字符,包括换行符一个 POSIX 正则表达式。 -
用 sed -z 试试
-
I'm writing a script which can parse an HTML document--> 不推荐使用sed。使用xmlstarlet之类的工具或具有解析 xml/html 的库的编程语言。如果您必须使用sed/awk/perl并且必须在整行中匹配这些模式,请参阅stackoverflow.com/questions/38972736/… -
Sundeep,抱歉,我不能使用 xmlstarlet 来完成这项任务。我需要删除以某些字符串开头的 2-3 行。它在 EMACS 中运行良好,但我想在脚本中进行。
-
I would like to remove two lines哪两行?I need to remove 2-3 lines starting with certain strings所以 2 或 3 行?究竟从哪个字符串开始?