美文网首页
文件提取——新手注解。open,grep,正则表达式,数组的灵活

文件提取——新手注解。open,grep,正则表达式,数组的灵活

作者: 一期一会_45c2 | 来源:发表于2018-08-09 16:54 被阅读0次

    本脚本作用 : 从特定文件夹中打开一系列的有规律的文件,并将其中特定的元素提取出来

    思路:利用循环依次打开各个符合条件的文件,将文件内容分割成数组,提取的元素是有着特定的数组下标。最后输出为文件。


    脚本:

    #!/usr/bin/perl -w

    use strict;                #这两行是标准控制,规范编码

    my @fil;

    my @filename;                     #有需要在外面申明一下这两个函数

    my $dir='/ifs4/HST/PROJECT/SGD/v9/TG20160329/';                 #所提取的文件夹的路径,存为$dir,方便修改;修改这个就可以了

    opendir DIR,"$dir" or die;#opendir                     #函数打开$dir的路径,DIR是句柄。待提取的各个文件就在$dir下。

    while(@filename=readdir(DIR))                     # readdir函数读取DIR中的文件,同时存为数组@filename

    {

    @fil=grep /^1.*?sh/,@filename;              #grep函数对文件名进行匹配,匹配成功的文件名输出为新的数组@fil。^1.*?sh  表示以1开头,sh结尾的所有文件

    print "@fil";                      #对新数组输出,查验结果 (可以不要)

        print "\n";

    }

    open MM,">fqq.txt"or die;                #open函数以写入的方式打开名为fqq.txt的文件。没有该文件则新建。文件中有内容将覆盖(从头输入)(<<则是不覆盖式输入)

    foreach (@fil){

    open IN, "$dir/$_"or die;                      #  $dir/$_ 表示的是一个文件。对于每一个@fil 的元素(包括文件后缀的文件名)输入的默认读取参数记录在$_上($_是个很常用)

        while(){                                                    

            chomp;

    my @s=split(/ /,$_);                    #对每个文件中的文字进行划分。用空格作为识别符并在空格处切割成一个个数组的元素。最终组成数组@s

    print MM"$s[5]\t";                   #按照自己想要的格式输出文件。\t 表示一个tab的空格。这样导入进excel的的时候就可以被清晰划分进一个个单元格。

            print MM"$s[7]\t";

            print MM"$s[9]\t";

            print MM"$s[21]\t";

    print MM"$s[19]\n";                    #每一行的最后一个元素输出后用反斜杠转义字符换行输出。当然,具体格式

        }

    }

    close DIR;                   #前面打开(open),后面就要有close。close一般放在后面比较好

    close IN;                    #我对句柄的理解是:把操作寄存在句柄上,方便调用

    close MM;


    本人菜鸟一枚,言论错误,多多指正,互相帮助。竢实扬华!

    相关文章

      网友评论

          本文标题:文件提取——新手注解。open,grep,正则表达式,数组的灵活

          本文链接:https://www.haomeiwen.com/subject/rwplaxtx.html