【问题标题】:Searching HTML files in a directory for text在目录中搜索 HTML 文件中的文本
【发布时间】:2012-01-20 23:07:07
【问题描述】:

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

现在我正在处理一个目录/Food 并拥有我从多个站点下载的.html 页面。

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

类似:

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

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

echo results

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

同样,如果这已涵盖,请指出我在哪里可以了解此内容的正确位置,但如果您有任何快速建议或快速脚本,那也太好了。

【问题讨论】:

  • 你打算使用什么编程语言?

标签: parsing search text full-text-search


【解决方案1】:

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

...如果是这样,基本的 linux 命令可以很好地解决这个问题。

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

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 "$*"

当保存为文件时。并使其可执行,可以运行测试搜索

find_in_food salt

将显示文件名列表。

(当然,这几乎没有触及这个可能的表面!)

【讨论】:

    猜你喜欢
    • 2014-08-17
    • 2013-04-10
    • 1970-01-01
    • 1970-01-01
    • 2016-11-29
    • 1970-01-01
    • 2018-04-26
    • 2015-06-07
    • 1970-01-01
    相关资源
    最近更新 更多