我可以实时tail -f -n20 <file>
查看文件的最后 20 行。
如果我想 grep 某些东西
tail -f <file> | grep <pattern>
,它仍然是活动的,但只会通过 tail 的输出进行 grep,这意味着我一开始并没有 20 行输出。 (如果 20 行中只有 5 行符合我的模式,那么我只能从输出中得到 5 行)
如果我做类似的事情
grep <pattern> <file> | tail -n20
我有 20 行输出,但它不是实时的,也不是
cat <file> | grep <pattern> | tail -n20
如何查看文件最后 n 行的实时更新后格雷普?
答案1
您可以tee
与进程替换一起使用>()
:
tail -f -n 20 file.log | tee >(grep 'pattern')
这将显示 的最后 20 行file.log
,然后显示 的结果grep
。
答案2
请注意,在 中tail -fn20
,20
only 从一开始就起作用。
tail
将显示前 20 行,然后继续显示全部新行一出现就添加(无论是 1 行、20 行还是 1000 行)。
或者换句话说,tail -fn20
就像tail -n20
后面跟着tail -fn+1
。
在这里,你可以这样做:
{ grep pattern | tail -n 20; tail -fn+1 | grep pattern; } < file
也就是说,手动执行第一步,然后tail -f
显示其余所有步骤。