加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

使用bash命令打印文件某个部分的最快方法

发布时间:2020-12-15 22:48:59 所属栏目:安全 来源:网络整理
导读:目前我使用sed打印文件的所需部分.例如,我使用了以下命令 sed -n 89001,89009p file.xyz 但是,随着文件大小的增加,它的速度非常慢(我的文件目前是6.8 GB).我试图按照这个link并使用该命令 sed -n '89001,89009{p;q}' file.xyz 但是,此命令仅打印第89001行.请
目前我使用sed打印文件的所需部分.例如,我使用了以下命令

sed -n 89001,89009p file.xyz

但是,随着文件大小的增加,它的速度非常慢(我的文件目前是6.8 GB).我试图按照这个link并使用该命令

sed -n '89001,89009{p;q}' file.xyz

但是,此命令仅打印第89001行.请帮助我.

解决方法

语法有点不同:

sed -n '89001,89009p;89009q' file.xyz

更新:

既然awk也有答案,我做了一个小比较,正如我想的那样 – sed有点快:

$wc -l large-file 
100000000 large-file
$du -h large-file 
954M    large-file
$time sed -n '890000,890010p;890010q' large-file > /dev/null

real    0m0.141s
user    0m0.068s
sys 0m0.000s
$time awk 'NR>=890000{print} NR==890010{exit}' large-file > /dev/null

real    0m0.433s
user    0m0.208s
sys 0m0.008s`

UPDATE2:

有一个更快的方式使用awk,由@EdMorton发布,但仍然不如sed快:

$time awk 'NR>=890000{print; if (NR==890010) exit}' large-file > /dev/null

real    0m0.252s
user    0m0.172s
sys     0m0.008s

更新:

这是我能找到的最快的方式(头部和尾部):

$time head -890010 large-file| tail -10 > /dev/null

real    0m0.085s
user    0m0.024s
sys     0m0.016s

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读