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

how access specific part of data as an input of AWK

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

换句话说,我只是想在我的机器上保留一些数据,我怎样才能避免下载所有数据并希望节省 space 和时间。有什么办法可以不将所有数据下载到本地机器吗?

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

编辑 1:

我以select字典为例,因为当你要查找一个词时,访问数据的特定部分就足够了,不需要处理整个数据。

我不是编程专家,所以我想我可以修改 使其工作(这就是我再次添加 AWK 标签的原因)。我不使用任何特定的 OS 或工具。这只是查看可能性的基本想法,所以我不知道如何改进标签。

awk 无法下载。您必须下载该文件并将其通过管道传输到一个命令中,该命令在找到结果后立即终止:

wget -qqO- http://example.com/path |grep -wim1 "word"

wget -qqO- URL 除了给定的 URL 的内容之外没有任何输出,它被放置在标准输出上,因此您可以随后对其进行解析。 grep -wim1 "word" 将找到第一个匹配 "word" 的边界词,然后终止。如果不需要输出,可以使用 -wiq 代替。如果字典每行一个词(没有别的),你最好用 -x 而不是 -w 这样你就可以完整地匹配 "can" 而不是 "can't" (' 是一个单词边界)。如果要匹配大小写,请删除 -i

在评论中,您提出了以下问题:

it may improve to jumpt to start of "w" character maybe so not to download whole data from "a" to "w". is it possible? I guess not

有些程序可以 "resume" 下载,您也许可以玩,但您必须猜测从哪里开始。这将需要大量工作,而且您可能会搜索得太远,因此找不到匹配项。

如果您不止一次查询这本词典,我建议您下载并保存它,以便您可以在本地查询。甚至 the largest dictionary I know of is only 213MB (compressed, search with zgrep), though I am assuming you're talking about a traditional word list rather than a hash table 或其他任意数据形式。当然,任何更长的内容都需要很长时间才能下载,以至于您只想下载一次。

如果您真的不想将其存储在本地,您或许应该考虑使用数据库而不是平面文件。