首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在文件中间显示特定行的快速unix命令?

在文件中间显示特定行的快速unix命令?
EN

Stack Overflow用户
提问于 2008-10-10 13:51:18
回答 16查看 408.6K关注 0票数 232

尝试调试服务器的问题时,我唯一的日志文件是一个20 no的日志文件(甚至没有时间戳!为什么人们使用System.out.println()作为日志记录?在生产中?!)

使用grep,我找到了文件中想要查看的一个区域,第347340107行。

除了做像这样的事情

代码语言:javascript
复制
head -<$LINENUM + 10> filename | tail -20 

..。这将需要head读取日志文件的前3.47亿行,有没有快速而简单的命令可以将347340100 - 347340200行(例如)转储到控制台?

update我完全忘了grep可以打印匹配周围的上下文...这样做效果很好。谢谢!

EN

回答 16

Stack Overflow用户

发布于 2008-10-10 14:06:33

如果您只知道行号,但不知道其他内容,我找到了另外两个solutions (不能使用grep ):

假设您需要20到40行,

代码语言:javascript
复制
sed -n '20,40p;41q' file_name

代码语言:javascript
复制
awk 'FNR>=20 && FNR<=40' file_name

使用sed时,在打印完最后一行后退出处理比继续处理直到文件末尾更有效。这对于开头的大文件和打印行的情况尤其重要。为此,上面的sed命令引入了指令41q,以便在第41行之后停止处理,因为在本例中,我们只对第20-40行感兴趣。您需要将41更改为您感兴趣的最后一行,加1。

票数 433
EN

Stack Overflow用户

发布于 2013-06-28 22:35:25

代码语言:javascript
复制
# print line number 52
sed -n '52p' # method 1
sed '52!d' # method 2
sed '52q;d' # method 3,  efficient on large files 

在大文件上高效的方法3

显示特定行的最快方法

票数 131
EN

Stack Overflow用户

发布于 2008-10-15 13:55:17

没有,文件是不可行寻址的。

没有固定时间的方法可以在文本文件中找到第n行的开始。您必须流过文件并计算换行数。

使用最简单/最快的工具来完成这项工作。对我来说,使用head比使用grep更有意义,因为后者要复杂得多。我不是说"grep很慢“,它确实不慢,但在这种情况下,如果它比head快,我会感到惊讶。基本上,这是head中的一个bug。

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

https://stackoverflow.com/questions/191364

复制
相关文章

相似问题

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