使用grep命令读取文件从特定行号到文件末尾

使用grep命令读取文件从特定行号到文件末尾

假设我有一个每隔几秒/分钟就会被附加的文件。第一次我读取了整个文件并存储了最后一个行号(例如:last_line_numer 是:2000),后来我想使用“grep”命令读取文件以查找从行号 2001 到文件末尾的模式。我们如何才能实现这一目标?

我第一次运行以下命令:

grep 'tracker.php' apache.log | cut -d' ' -f1-8

现在我想在 grep 参数中使用特定行号运行上面的命令。

答案1

您可以使用 tail 从第 2001 行输出文件,并将结果通过管道传输到您的命令:

<apache.log tail +2001 | grep 'tracker.php' | cut -d' ' -f1-8

答案2

您可以使用

awk 'NR<2001 {next} /tracker.php/ {print NR, $1,$2,$3,$4,$5,$6,$7,$8}' apache.log

或者

awk 'NR<2001 {next} /tracker.php/ {print NR, $0}' apache.log | cut -d' ' -f1-9

它还将显示文件中匹配行的原始行号。

答案3

使用sed

sed '1,2000d; /tracker\.php/!d' | cut -d ' ' -f-8

也就是说,丢弃第 1 行到 2000 行(含),然后也丢弃任何不包含字符串 的行tracker.php。通过 发送其余行cut

相关内容