unix 如何在线采集基于起始字符的数据?

e4eetjau  于 2022-11-04  发布在  Unix
关注(0)|答案(1)|浏览(181)

因此,我试图找到一种更省时的方法来“grep/search”以特定字符/字符集开始的行。我有一个50 GB的文件,其中包含通过命令LC_ALL='C' sort -u data.txt > data_sorted.txt排序的数据。假设我想查找以horse开头的所有行,我当前会执行LC_ALL='C' grep -i -E "^horse.*" data_sorted.txt
这个命令的问题是grep不能自动地看到(并跳转到)以horse开始的行,而是直接grep 0-9A-Z或其他它能做的。有没有一种替代的方法来整理数据,它会跳转到搜索查询的第一个字符,以加快速度?
这很难解释,很抱歉让你搞混了。

3htmauhk

3htmauhk1#

一种可能的方法是使用look(1)。虽然这通常用于搜索系统单词列表词典,但您可以指定一个不同的文件,它会对与给定前缀匹配的行进行二进制搜索。
因此,您可以尝试:

look horse data_sorted.txt

(Some look的版本可能需要-b选项来执行二进制搜索;请参阅您当地的手册页)
如果你想像grep那样进行不区分大小写的搜索,那么文件必须以不区分大小写的方式排序(sort -f),并且look需要-f选项。

相关问题