现有一个文件datafile.dat,里头可能有上百万行的数据记录。由于文件太大,不可能一次把所有内容都加载下来,所以只能对其逐行读取并处理。为提高执行速度,考虑对这个大数据文件进行并发处理,即让脚本1处理第1-10W行,脚本2处理第10W-20W行……脚本10处理第90W~100W行。
这就需要在脚本n中把文件的行指针自动预先指向第n万行的记录后才能开始读取。请问shell中有没有这个功能呢?谢谢!
可以用C来实现,当然,实现的方法还是跳过这些行,如下:
FILE *fp = fopen("datafile.dat", "r");}
这个简短程序就实现了取第10万行到第20万行的数据。这10万和20万可以用参数带入,比如这个程序运行名是do_proc,那参数可以这么带:
do_proc 100000 200000
从第3行开始取30行
sed -n '3,5p' datafile.dat显示第3到5行
本回答被提问者采纳