【问题标题】:How to search single keyword from multiple file in perl?如何在perl中从多个文件中搜索单个关键字?
【发布时间】:2014-01-21 10:19:02
【问题描述】:

我有两到三个文件。在这个文件中给出了目录的路径。在这些文件中还给出了另一个文件。关键字由参数给出。这些文件的名称也作为参数给出。所以我们必须在所有作为参数列表给出的文件中找到关键字。我们必须在包含关键字的文件中写入文件名和行。

如何用 Perl 编写这个程序?

【问题讨论】:

  • 请向我们展示您的输入文件示例以及您期望的输出。
  • perl task.plx keyword f1.f f2.f 我们必须在 f1.f f2.f 中搜索关键字,如果 f1.f 和 f2.f 中提到了其他文件,那么我们必须也搜索这些文件。输出将生成为。 f1:包含关键字的行。
  • 请编辑您的问题。显示 file1 中的内容(在每行的开头缩进 4 个空格)。显示文件 2 中的内容。显示文件 3 中的内容。显示您希望结果的样子。并解释为什么会这样。
  • 查看ack的源码。
  • 在这个文件中给出了新目录的路径。我们必须在这些目录中显示的所有文件中找到关键字。该路径以 +incdir+path of directory 开头

标签: perl file arguments keyword perl-module


【解决方案1】:

试试这个代码...而不是给出文件名列表作为参数,列出文件中名为file_name.lst 的所有文件并运行这个脚本

my $file_name="./file_names.lst";
open(FFILE,$file_name);
while(<FFILE>){
        chomp($_);
        if(-f "$_"){
                $_=~s/ /\\ /g;#escape spaces
                $_=~s/\!/\\\!/g;
                my $myoutput=`grep -in $ARGV[0] "$_"`;
                chomp($myoutput);
             #   print "campaign name is $_ and $myoutput\n";
                        my $errorcode=`echo $?`;
                        chomp( $errorcode);
#                       print "$errorcode\n";
                        if("$errorcode" eq 0 ){
                                print "$_\n";

                        }


        }

}

close(FFILE);

【讨论】:

    猜你喜欢
    • 2013-01-18
    • 2011-09-14
    • 2017-11-09
    • 1970-01-01
    • 2014-09-25
    • 1970-01-01
    • 1970-01-01
    • 2020-10-11
    • 2018-03-27
    相关资源
    最近更新 更多