首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何连续显示文件的最后几行内容

如何连续显示文件的最后几行内容
EN

Stack Overflow用户
提问于 2013-01-30 20:47:37
回答 5查看 44.8K关注 0票数 24

我正在尝试寻找一个Unix命令(可能是组合命令)来说明如何连续显示文件的最后几行内容。但在此显示期间,当滚动内容到达屏幕顶部时,我希望一些顶部行始终显示在屏幕顶部。

这有可能吗?

(1)假设我有一个文件,"job.sta",前两行是:工作名称,John在2013-Jan-30的工作,...Tab1,Tab2,Tab3 0,1,2,1,90,89 2,89,23...

(2)这个文件正在运行,它的内容正在增长,我不知道它将结束于哪一行。

(3)所以当更新内容到达Unix shell屏幕顶部时,我希望在使用tail命令时显示(总是)前2行。我现在正在使用PuTTY。

参考:http://www.unix.com/unix-dummies-questions-answers/172000-head-tail-how-display-middle-lines.html

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-01-31 02:11:49

这将每2秒更新一次,而不是每次将数据写入文件时进行更新,但这可能就足够了:

代码语言:javascript
运行
复制
watch 'head -n 2 job.sta; tail job.sta'
票数 24
EN

Stack Overflow用户

发布于 2014-03-27 08:41:48

我一直使用这个函数来监视另一个终端窗口中的日志文件。

代码语言:javascript
运行
复制
tail -f <filename>

我建议前进一步,在日志中查找特定的文本。如果你只想看到一些特定的条目被写到文件中,那就太棒了。

代码语言:javascript
运行
复制
tail -f <filename> | grep <keyword or pattern>
票数 62
EN

Stack Overflow用户

发布于 2013-01-30 21:01:11

我使用这个脚本来达到你所描述的效果

代码语言:javascript
运行
复制
!#/bin/bash
while [ 1 ]; do ls -lt data | head -n 30; sleep 3; echo -en "$(tput cuu 30; tput ed)"; done

这将在循环中运行命令,并在每次迭代之前从屏幕中删除输出的最后一行。

在您的例子中,它看起来像这样

代码语言:javascript
运行
复制
!#/bin/bash

while [ 1 ] ;# loop forever
do 
    head -n 2 job.sta ;# display first 2 lines 
    tail -n 30 job.sta ;# display last 30 lines from file
    sleep 3 ;# wait a bit
    echo -en "$(tput cuu 32; tput ed)" ;# delete last 32 lines from screen
done

当然,在您的文件达到30行之前,它有点难看

希望这能有所帮助

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14604397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档