如何访问特定部分数据作为AWK的输入

时间:2016-02-20 16:46:56

标签: unix dictionary remote-access

假设我想访问在线词典并需要查找特定单词。我只想拥有数据的特定部分,那些与单词及其翻译相关的数据作为AWK的输入,是什么想法?

换句话说,我只想在我的机器上有一个数据边缘,如何防止下载所有数据并希望节省空间和时间。没有将所有数据下载到本地机器有没有办法这样做?

这个问题与我的上一个问题here有关。

编辑1:

我选择字典作为一个例子,因为当你想要查找一个单词时,它就足以访问一个特定的数据部分,而不需要处理整个数据。

我不是编程方面的专家,所以我想我可以修改this answer使其工作(这就是为什么我再次添加AWK标签)。我不使用任何特定的操作系统或工具。这只是一个基本的想法,看看有什么可能性,所以我不知道如何改进标签。

1 个答案:

答案 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或其他任意数据形式。当然,任何更长的时间都需要花费很长时间才能下载,你只想做一次。

如果你真的不想在本地存储它,你应该考虑数据库而不是平面文件。