目前我使用sed打印文件的所需部分.例如,我使用了以下命令
sed -n 89001,89009p file.xyz
Run Code Online (Sandbox Code Playgroud)
但是,随着文件大小的增加,它的速度非常慢(我的文件目前是6.8 GB).我试图按照此链接使用该命令
sed -n '89001,89009{p;q}' file.xyz
Run Code Online (Sandbox Code Playgroud)
但是,此命令仅打印第89001行.请帮助我.
语法有点不同:
sed -n '89001,89009p;89009q' file.xyz
Run Code Online (Sandbox Code Playgroud)
更新:
既然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`
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
更新:
这是我能找到的最快的方式(头部和尾部):
$ time head -890010 large-file| tail -10 > /dev/null
real 0m0.085s
user 0m0.024s
sys 0m0.016s
Run Code Online (Sandbox Code Playgroud)