从gz文件中grep几个字符串

时间:2017-11-06 05:13:15

标签: bash grep gunzip

从第二个文件中匹配多个字符串的非常大的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

2 个答案:

答案 0 :(得分:1)

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

zgrep -f match_strings.txt file.gz

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

答案 1 :(得分:0)

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

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