如何在文件处理中使用grep命令

时间:2017-02-09 09:02:46

标签: perl

对Perl来说很新,

我的要求是读取一个目录并搜索或匹配特定文件并处理读取该文件

我知道这对你们很容易,但是我不能这样做,所以请提供一些指导来完成这个

我已按以下代码列出。

{

#!/usr/bin/perl
use strict;
use warnings;
use File::stat;
use File::Copy;
use Sys::Hostname;

$source_raw_directory = "/dfactory/data/raw/in/";

opendir (DIR,$source_raw_directory) 

#foreach @array (grep(/hiea_._DeletedPatient\.txt$/,readdir(DIR)));
@array = grep (/\hiea_._DeletedPatient\.txt$/,readdir(DIR))
    #print "@array"; 
closedir(DIR);

} 我收到如下错误

“数组找到了运营商在Deleted_Patient.pl第45行的预期位置         (以前缺少操作员?) Deleted_Patient.pl第45行的语法错误,靠近“)

    #foreach @array (grep(/hiea_._DeletedPatient\.txt$/,readdir(DIR)));
     @array "

Deleted_Patient.pl有编译错误“

由于 PANDIA

3 个答案:

答案 0 :(得分:1)

我不会。我发现opendirgrep是一个笨拙的习惯用法,而你可以glob代替。

foreach my $filename ( glob ( "$source_raw_directory/*iea_._DeletedPatient.txt" ) ) {
    print $filename,"\n";
}

注意 - glob会扩展路径,因此您将拥有完整的路径名。我通常认为这是一个优势,因为这意味着您永远不会忘记在open次调用中包含路径名。

答案 1 :(得分:0)

你说你的错误包括" (之前缺少操作员?)"。这并不是特别清楚,但似乎暗示错误出现在错误中引用的代码之前。 @array之前的行是注释,因此不太可能出现问题,所以让我们先看看这行。

opendir (DIR,$source_raw_directory) 

我认为问题是明确的。在该行的末尾没有评论。

我使用Perl 5.22.2测试了您的代码,它提供了更清晰的错误消息:

  

找到运算符在测试线13附近的位置,接近")

#foreach @array (grep(/hiea_._DeletedPatient\.txt$/,readdir(DIR)));
@array"
     

(前一行缺少分号?)

答案 2 :(得分:-1)

首先,使用谷歌和官方POD文档,例如 http://perldoc.perl.org/functions/readdir.html

你的代码使用了这个:

var conf = new Dictionary<string, dynamic>();
conf["url"] = "http://example.com";
conf["timeout"] = 30;
// in some other place
string url = conf["url"];
int timeout = conf["timeout"];