如何在指定的行号后grep一个字符串?

alw*_*btc 22 linux string search grep

我有一个大文本文件,我想看到包含"time spent"在这个文本文件中的行,我使用:

grep -in "time spent" myfile.txt
Run Code Online (Sandbox Code Playgroud)

但是我只对50000之后的行感兴趣.在输出中我想看到50000之后的行并且包含"花费的时间".有没有办法做到这一点?

adr*_*ray 36

你可以尾随它,然后grep:

tail -n +50000 myfile.txt | grep -in "time spent"
Run Code Online (Sandbox Code Playgroud)

  • 这效果不太好,因为它弄乱了行编号 (2认同)

K.K*_*K.K 6

任何 2 个行号之间的 grepping 的答案:

Using sed and grep:

sed -n '1,50000p' someFile | grep < your_string >
Run Code Online (Sandbox Code Playgroud)


ner*_*ric 5

或者,您可以使用sedsed可以用来模仿grep

sed -n 's/pattern/&/p'

默认情况下,sed即使没有替换发生,也会打印每行。的组合-n/p品牌sed只打印其中一个取代已发生的行。最后,我们用替换pattern&代替pattern它本身。结果:我们只是模仿了grep

现在sed可以采取一系列行动。在您的情况下:

sed -n '50000,$s/time spent/&/p' myfile.txt

指定范围的格式如下:start,end 我们只是指示sed从50000行开始,$这意味着最后一行。

  • 接受的答案是正确的。请注意,“ tail -n +2”(所有行均从第2行开始)与“ tail -n 2”(仅最后2行)有很大不同。 (8认同)