【发布时间】:2022-01-28 20:28:31
【问题描述】:
我有 500 多个文件的集合,其中包含许多用于分隔数据元素的
标签。
例如,file001.htm 包含:
<br \/>J Smith<br \/>B Jones<br \/>john smith betty Jones<br \/>Henry Peterson<br \/>jones Smith<br \/>
对于单个文件;此命令将查找同时具有“Smith”和“Jones”的数据元素(忽略大小写和顺序):
sed 's/<br \/>/\n/g' file001.htm | grep -i Smith | grep -i Jones
生产:
john smith betty Jones
jones Smith
但是当我将 file001.htm 更改为 file*.htm;我得到了很多匹配项,但我不知道哪个文件包含这些匹配项。
我想要一个命令行解决方案,它可以按任意顺序在所有文件中搜索
标记之间的两个单词,并且输出会告诉我哪些文件包含匹配的数据。
【问题讨论】:
-
您正在尝试做的事情,在像 HTML 这样的结构化数据文件中查找字符串,这不是您可以使用正则表达式可靠地完成的事情。您应该在您选择的编程语言中使用适当的 HTML 解析器。
-
您的 sed 脚本没有产生您所说的输出,请检查一下。
-
使用正则表达式解析html会引起长辈的愤怒。 stackoverflow.com/a/1732454/1216776
标签: linux sed command-line grep html-parsing