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

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

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

除了做类似的事情

head -<$LINENUM + 10> filename | tail -20 

...需要head读取日志文件的前3.47亿行,是否有快速简单的命令将线路347340100 - 347340200(例如)转储到控制台?

更新我完全忘了grep可以打印匹配的上下文......这很好。 谢谢!


用GNU-grep你可以说

grep --context=10 ...

如果你知道行号但没有别的(不可能),我找到了另外两个解决方案:

假设你需要20到40行,

sed -n '20,40p;41q' file_name

要么

awk 'FNR>=20 && FNR<=40' file_name

# print line number 52
sed -n '52p' # method 1
sed '52!d' # method 2
sed '52q;d' # method 3,  efficient on large files 

方法3对大文件有效

最快的方式来显示特定的行

链接地址: http://www.djcxy.com/p/19651.html

上一篇: Quick unix command to display specific lines in the middle of a file?

下一篇: Grep to Print all file content