例如,如何grep
从第 1000 行到第 2000 行、直到第 1000 行或从第 1000 行的大文件的某个部分?我不想将文件拆分为较小的文件。
问问题
589 次
3 回答
4
你可以sed
用来预处理。编辑:添加q
每个肯特的建议
sed -n '1000,2000{p;2000q}' file.txt | grep 'abc'
从第 1000 行到文件末尾
sed -n '1000,$p' file.txt | grep 'abc'
于 2013-05-16T15:29:16.743 回答
2
sed
作为@ravoori对解决方案的一个小改进,将其重构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
于 2013-05-16T16:33:51.480 回答
1
我建议
head -2000 FILE.TXT | tail -1000 | grep XXX
作为最整洁的解决方案,因为head
不必读取巨大的文件,只需前 N 千行。它基本上实现q
了sed
解决方案中的功能。
于 2013-05-16T17:25:51.953 回答