【发布时间】:2018-05-31 03:13:23
【问题描述】:
我正在比较以下两个文件的重复项
文件1
ac-list hostname permit tcp host 110.185.35.111 host 10.185.38.220 eq 1222
文件2
ac-list hostname permit tcp host 10.185.35.111 host 10.185.38.220 eq 1222
我的脚本如下
#!/usr/bin/perl
open( SOURCE, "</home/amp/surevy01/file1" );
open( DESTINATION, "</home/amp/surevy01/file2" );
while ( my $line = <SOURCE> ) {
while ( my $line1 = <DESTINATION> ) {
chomp( $line );
chomp( $line1 );
my @columns = split( ' ', $line );
my @gitcols = split( ' ', $line1 );
my $fld1 = $columns[4];
my $fld2 = $columns[5];
my $fld3 = $columns[6];
my $fld4 = $columns[7];
my $fld5 = $columns[9];
my $gitfld1 = $gitcols[4];
my $gitfld2 = $gitcols[5];
my $gitfld3 = $gitcols[6];
my $gitfld4 = $gitcols[7];
my $gitfld5 = $gitcols[9];
if ( $line == $line1
|| awk '/$fld1/ && /host/ && /$fld2/ && /$fld3/ && /$fld4/ && /$fld5/' $line1 ) {
print "\n All duplicate";
}
}
}
我收到以下错误:
在 ./perltest 第 25 行,“awk '/$fld1/ && /host/ && /$fld2/ && /$fld3/ && /$fld4/ && /$fld5/'”附近的操作员预期的位置找到字符串(您需要预先声明 awk 吗?)
标量在 ./perltest 第 25 行,靠近“'/$fld1/ && /host/ && /$fld2/ && /$fld3/ && /$fld4/ && /$fld5/' $line1” (缺少运算符在 $line1 之前?)
./perltest 第 25 行的语法错误,靠近“awk '/$fld1/ && /host/ && /$fld2/ && /$fld3/ && /$fld4/ && /$fld5/'”
./perltest 第 30 行,“}”附近的语法错误
./perltest 的执行由于编译错误而中止。
但是,如果不使用 awk 命令,我的脚本运行良好。
【问题讨论】:
-
Perl 中没有“awk 命令”。你从哪里得到的?
-
awk '/$fld1/ && /host/ && /$fld2/ && /$fld3/ && /$fld4/ && /$fld5/' $line1可能是指grep { /$fld1/ && /host/ && /$fld2/ && /$fld3/ && /$fld4/ && /$fld5/ } ( $line1 )(Perl 没有awk命令,但it has agrepcommand)。
标签: perl