从 gz 文件中 grep 几个字符串

grep several strings from gz file

从一个非常大的 gz 文件中提取与第二个文件中的多个字符串匹配的行的最佳方法是什么?

我试过了,它适用于该字符串及其周围:

gunzip -c /myfolder/large_file.gz | grep -B 50 "33754548"  > /myfolder/specific_linesfrom_large_files.txt

但是,有时候需要的字符串并不在50行附近,所以我尝试了:

gunzip -c /myfolder/large_file.gz | grep  -F  /myfolder/multiple_strings.txt  > /myfolder/specific_linesfrom_large_files.txt

哪个没用,有什么建议吗?

例如,multiple_strings.txt 文件可能包含:

16804029
42061608
42069963
42072123
177479064
177420374
gunzip -c /myfolder/large_file.gz | grep -f /myfolder/multiple_strings.txt > /myfolder/specific_linesfrom_large_files.txt

同时使用 -x 搜索精确模式,例如,如果搜索 123,则可以匹配 1234、123 等。使用 -x 则只能匹配 123。

使用zgrep搜索压缩文件。还有其他命令,如 bzgrep(用于 bzip2 文件)、xzgrep 等用于压缩文件。

zgrep -f match_strings.txt file.gz

-f是从指定文件中读取模式的标志。