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

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

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


脚本:

#!/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,正则表达式,数组的灵活使用)