做网站怎样上传文件,哎呦视频在线资源观看,网站开发工作室营业执照,易企秀h5制作模板免费From: http://www.embeddedlinux.org.cn/html/jishuzixun/201211/19-2387.html 在linux中有很多方法逐行读取一个文件的方法#xff0c;其中最常用的就是下面的脚本里的方法#xff0c;而且是效率最高#xff0c;使用最多的方法。为了给大家一个直观的感受#xff0c;我们…From: http://www.embeddedlinux.org.cn/html/jishuzixun/201211/19-2387.html 在linux中有很多方法逐行读取一个文件的方法其中最常用的就是下面的脚本里的方法而且是效率最高使用最多的方法。为了给大家一个直观的感受我们将通过生成一个大的文件的方式来检验各种方法的执行效率。
方法1while循环中执行效率最高最常用的方法。function while_read_LINE_bottm(){While read LINEdoecho $LINEdone $FILENAME}注释我习惯把这种方式叫做read釜底抽薪因为这种方式在结束的时候需要执行文件就好像是执行完的时候再把文件读进去一样。方法2 重定向法管道法: cat $FILENAME | while read LINEFunction While_read_LINE(){cat $FILENAME | while read LINEdo echo $LINEdone}注释我只所有把这种方式叫做管道法相比大家应该可以看出来了吧。当遇见管道的时候管道左边的命令的输出会作为管道右边命令的输入然后被输入出来。方法3 文件描述符法Function while_read_line_fd(){Exec 30Exec 0$FILENAMEWhile read LINEDo Echo $LINEExec 03}注释 这种方法分2步骤第一通过将所有内容重定向到文件描述符3来关闭文件描述符0.为此我们用了语法Exec 30 。第二部将输入文件放送到文件描述符0即标准输入。方法4 for 循环。function for_in_file(){For i in cat $FILENAMEdoecho $idone}注释这种方式是通过for循环的方式来读取文件的内容相比大家很熟悉了这里不多说。对各个方法进行测试看那方法的执行效率最高。首先我们用脚本(脚本见附件)生成一个70000行的文件文件位置在/scripts/bigfile。然后通过下面的脚本来测试各个方法的执行效率脚本很简单不再解释。#!/bin/bashFILENAME$1TIMEFILE/tmp/loopfile.out $TIMEFILE SCRIPT$(basename $0)function usage(){echo -e \nUSAGE: $SCRIPT file \nexit 1}function while_read_bottm(){while read LINEdoecho $LINEdone $FILENAME}function while_read_line(){cat $FILENAME | while read LINEdoecho $LINEdone}function while_read_line_fd(){exec 30exec 0 $FILENAMEwhile read LINEdo echo $LINEdoneexec 03}function for_in_file(){for i in cat $FILENAMEdoecho $idone}if [ $# -lt 1 ] ; thenusagefiecho -e \n starting file processing of each method\necho -e method 1:echo -e function while_read_bottmtime while_read_bottm $TIMEFILEecho -e \necho -e method 2:echo -e function while_read_line time while_read_line $TIMEFILEecho -e \necho -e method 3:echo function while_read_line_fdtime while_read_line_fd $TIMEFILEecho -e \necho -e method 4:echo -e function for_in_filetime for_in_file $TIMEFILE执行脚本后 [rootlocalhost shell]# ./while /scripts/bigfile 脚本输出内容method 1:function while_read_bottmreal 0m5.689suser 0m3.399ssys 0m1.588smethod 2:function while_read_line real 0m11.612suser 0m4.031ssys 0m4.956smethod 3:function while_read_line_fdreal 0m5.853suser 0m3.536ssys 0m1.469smethod 4:function for_in_filereal 0m5.153suser 0m3.335ssys 0m1.593s下面我们对各个方法按照速度进行排序。real 0m5.153s method 4 for 循环法real 0m5.689s method 1 while 釜底抽薪法real 0m5.853s method 3 标识符法real 0m11.612s method 2 管道法由此可见在各个方法中for语句效率最高而在while循环中读写文件时while read LINE do echo $LINE done $FILENAME 方式执行效率最高。