在目录中搜索HTML文件以查找文本

时间:2011-12-15 08:10:36

标签: parsing search text full-text-search

好的,我对编程非常陌生,但我理解如何概念化和谈论我想要什么,需要学习和找到更好的东西。

目前我正在使用目录/Food并拥有我已从多个网站下载的.html个网页。

我想创建一个脚本来基本上使用目录/Food以及此文件夹及其子目录中的所有文件,并比较包含我输入的相同字符串的文件的文本。 / p>

类似于:

commandforsearchingtextfiles  [option for directory]/food *.[or command for all files following this directory path]

salt (string1)
sugar (string 2)
flour (string 3)

echo results

结果/输出应该是包含字符串的文件......如果你可以添加关于如何组织输出的额外想法

再说一遍,如果有这个问题,请指出我在哪里可以了解这一点,但如果您有任何快速建议或快速脚本,那也很棒。

1 个答案:

答案 0 :(得分:1)

你在Linux上?或者可以使用cygwin(如果在Windows上)?

...如果是这样,基本的linux命令就可以很好地应对。

例如搜索包含salt的所有文件......

find Food/ -type f -name "*.html" -print0 | xargs -0 grep salt

可以通过向各种命令添加更多开关来缩小/扩大搜索范围,例如不区分大小写:

find Food/ -type f -name "*.html" -print0 | xargs -0 grep -i salt

或只是文件名(不是匹配的文字)

find Food/ -type f -name "*.html" -print0 | xargs -0 grep -l salt

更多检查“grep -h”。

可以使用多字短语

find Food/ -type f -name "*.html" -print0 | xargs -0 grep -i "the quick brown fox"

但是有一个额外的复杂性 - HTML本身并不关心空白,所以这个短语可以分成多行。这意味着文档中的空格可能与您的搜索不同。例如以上不匹配

   

快    棕色狐狸

但是有效的HTML。使用正则表达式解决...

find Food/ -type f -name "*.html" -print0 | xargs -0 grep -iE "the[[:space:]]+quick[[:space:]]+brown[[:space:]]+fox"

但它开始变得凌乱。

你可以将它放在.sh中,所以不必输入所有内容。

例如

#!/usr/bin/sh
find Food/ -type f -name "*.html" -print0 | xargs -0 grep -i "$*"

保存为文件时。并且可执行,可以运行运行测试searc

find_in_food salt

将显示文件名列表。

(这当然几乎没有涉及到这可能的表面!)