0

如何将以下命令仅应用于文本文件的一部分?例如从开始到第 5000 行。

grep "^  A : 11  B : 10" filename | wc -l

我不能使用 head 然后应用上面的命令,因为文本文件很大。

4

2 回答 2

4

您可以尝试使用 sed 命令,我认为它对大文件更好,从这个问题和管道到 grep。

sed -n 1,5000p file | grep ...
于 2013-09-15T00:59:40.733 回答
1

您可以尝试组合 -n (在每行输出前加上行号)和 -m (限制匹配行数)。像这样的东西:

grep -n -m 5000 pattern file.txt | grep -B 5000 "^5000:" | wc -l

首先 grep 搜索模式,添加行号并将输出限制为前 5000 个匹配行(最坏的情况:范围匹配模式中的所有行)。第二个 grep 匹配行号 5000,并打印此行之前的所有行。

我不知道这是否是更有效的解决方案

于 2013-09-16T00:47:50.557 回答