使用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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |