我有以下 sed 命令:
sed 's/\('\''\).*div><div>/,/'
它采用单引号'
和之间的所有内容div><div>
并用逗号替换它,
。它的工作效果非常接近我想要的效果。然而,有些行包含两行div><div>
,我的命令将第二行作为其停止点,我试图在第一行处将其切断。
为了尝试提供更清晰的信息,以下是我尝试从中提取数据的文件中的行:
'>Person A</a></div><div>Teaching A</div></div></td><td width='50%'><div style='height: 50px; margin-bottom: 6px;'><div style='font-weight:bold'>Unknown or external</div><div>Teaching B<
我正在尝试替换所有内容,直到Teaching A
我的输出看起来应该像这样,Teaching A
。然而我得到的输出是,Teaching B
.
我如何操作我的 sed 命令来获取第一个实例div><div>
而不是最后一个实例?
答案1
@AdminBee:我还建议非贪婪匹配
@Dr Little:你的解决方案是什么?请告诉我们。
如果我理解正确的话,这也应该有效:
sed 's/\('\''\).*<.a><div><div>/,/'
.
请理解,不建议使用正则表达式解析 HTML 文件。例如,有一次我使用 vim+regex 解析数十个数千个 HTML 文件,这是一项时间敏感的任务,我很遗憾这样做。为什么?因为如果我使用实际的 XML/HTML 解析器来解析文本文件/提取行和数据,任务可能会更快地完成。