Grep部分大文件而不拆分它

时间:2013-05-16 15:25:56

标签: unix command-line grep

我怎样才能{1000} 1000行到2000行,1000行或1000行的大文件的某个部分?grep? 我不想将文件拆分成较小的文件。

3 个答案:

答案 0 :(得分:4)

您可以使用sed进行预处理。编辑:根据Kent的建议添加q

sed -n '1000,2000{p;2000q}' file.txt | grep 'abc'

第1000行到文件末尾

sed -n '1000,$p' file.txt | grep 'abc'

答案 1 :(得分:2)

作为@ravoori对sed解决方案的一个小改进,将grep重构为sed

sed '1000,$/pattern/!d;2000q' file.txt

如果变量中有模式,请使用双引号;

sed '1000,$/'"$pattern"'/!d;2000q' file.txt

或等同于Awk:

awk 'NR==2000{exit(0)}NR>=1000 && /pattern/' file.txt

或使用变量

awk -v pat="$pattern" 'NR==2000{exit(0)}NR>=1000 && $0~pat' file.txt

答案 2 :(得分:1)

我建议

head -2000 FILE.TXT | tail -1000 | grep XXX

作为最好的解决方案,因为head不需要读取大文件,只需要前几千行。它基本上实现了q解决方案中sed所做的事情。