Perl脚本,解析单词之间的文本文件

时间:2013-12-06 19:53:37

标签: perl file parsing text

我有一个看起来像这样的文本文件:

... //John/box/sandbox/users/abc/project/build/file2
... //John/box/sandbox/users/cde/project/build/file1
... //John/box/sandbox/users/hdf/project/config/file

使用Perl脚本,我如何解析此文件,以便我的最终输出为:

//John/box/sandbox/users/abc/project/
//John/box/sandbox/users/cde/project/
//John/box/sandbox/users/hdf/project/

基本上我的最终目标是在同一行搜索“//”和“project”,然后将它们之间的所有内容都包含在内。

感谢您的快速反应,两者似乎都不适合我 我正在使用perl 5.8.3 build 809 perl -nle 'print $1 if m@(//.*project/)@;' output.txt

   use FileHandle;
   use Env;
   use Tk;
   use File::Copy;

   open(DAT, "output.txt") || die("Could not open file!");
   my $input = <DAT>;
   while (<$input>){
   chomp;
   print "$1\n" if ($_ =~ /(^\/\/.*project\/)/);
   }

每个人都感谢你的帮助。它工作正常,我不得不删除^。 对于将来的问题,我将添加我的工作,对不起,这是我的第一个问题。人类犯错误:))

2 个答案:

答案 0 :(得分:0)

这很简单,可以用作命令行过滤器:

perl -nle'print $1 if m@(//.*project/)@;' output.txt

答案 1 :(得分:0)

my $infile = 'in.txt';
open my $input, '<', $infile or die "Can't open to $infile: $!";   

while (<$input>){
    chomp;
    print "$1\n" if ($_ =~ /(\/\/.*project\/)/);
    }