假设我有一个每隔几秒/分钟就会被附加的文件。第一次我读取了整个文件并存储了最后一个行号(例如: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
。