繁体   English   中英

在 htm 文件中搜索 BR 标签之间的单词对

[英]search htm files for pair of words between BR tags

我收集了 500 多个文件,其中包含许多用于分隔数据元素的 <br /> 标签。

例如,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

产生:
约翰史密斯贝蒂琼斯
琼斯·史密斯

但是当我将 file001.htm 更改为 file*.htm; 我得到了很多匹配项,但我不知道哪个文件包含这些匹配项。

我想要一个命令行解决方案,它可以按任意顺序在所有文件中搜索 <br /> 标签之间的两个单词,output 会告诉我哪些文件包含匹配的数据。

如果您的输入确实像您显示的那样常规,这将满足您的要求,将 GNU awk 用于多字符RSIGNORECASE

$ awk -v RS='<br [\\\\]/>' -v OFS=': ' -v IGNORECASE=1 '
    /smith/ && /jones/ { print FILENAME, $0 }
' file*.htm
file001.htm: john smith betty Jones
file001.htm: jones Smith

请注意,正如您在 sed 脚本中所写的那样,因此在上面复制了smith匹配smithereens等。如果这是一个问题,那么如果您的目标字符串都是单词组成字符,您可以添加单词边界以避免此类部分匹配问题:

$ awk -v RS='<br [\\\\]/>' -v OFS=': ' -v IGNORECASE=1 '
    /\<smith\>/ && /\<jones\>/ { print FILENAME, $0 }
' file*.htm
file001.htm: john smith betty Jones
file001.htm: jones Smith

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM