我有一个看起来像这样的文本文件:
... //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\/)/);
}
每个人都感谢你的帮助。它工作正常,我不得不删除^
。
对于将来的问题,我将添加我的工作,对不起,这是我的第一个问题。人类犯错误:))
答案 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\/)/);
}