假设我想访问在线词典并需要查找特定单词。我只想拥有数据的特定部分,那些与单词及其翻译相关的数据作为AWK的输入,是什么想法?
换句话说,我只想在我的机器上有一个数据边缘,如何防止下载所有数据并希望节省空间和时间。没有将所有数据下载到本地机器有没有办法这样做?
这个问题与我的上一个问题here有关。
编辑1:
我选择字典作为一个例子,因为当你想要查找一个单词时,它就足以访问一个特定的数据部分,而不需要处理整个数据。
我不是编程方面的专家,所以我想我可以修改this answer使其工作(这就是为什么我再次添加AWK标签)。我不使用任何特定的操作系统或工具。这只是一个基本的想法,看看有什么可能性,所以我不知道如何改进标签。
答案 0 :(得分:1)
awk
无法下载。您必须下载该文件并将其传递给命令,该命令会在找到结果后立即终止:
wget -qqO- http://example.com/path |grep -wim1 "word"
wget -qqO- URL
除了给定URL的内容之外没有其他输出,这些内容放在标准输出上,因此您可以解析它。 grep -wim1 "word"
会找到与“word”匹配的第一个有界字,然后终止。如果您不需要输出,则可以使用-wiq
代替。如果字典每行有一个单词(没有其他内容),那么最好使用-x
而不是-w
,以便您可以完全匹配“可以”而不是“不能” ('
是一个单词边界)。如果您想匹配大小写,请移除-i
。
在评论中,你问:
可能会改进跳到“w”字符的开头可能不会将整个数据从“a”下载到“w”。可能吗?我猜不是
某些程序可以“恢复”下载,您可以使用它,但您必须猜测从哪里开始。这将是很多工作,你可能会寻求太远,因此无法得到匹配。
如果您不止一次查询此词典,我建议您下载并保存,以便您可以在本地查询。即使the largest dictionary I know of只有213MB(压缩,使用zgrep
搜索),但我假设你在谈论传统的单词列表而不是hash table或其他任意数据形式。当然,任何更长的时间都需要花费很长时间才能下载,你只想做一次。
如果你真的不想在本地存储它,你应该考虑数据库而不是平面文件。