我使用以下AWK命令作为独立命令没有任何问题,没有任何错误:
$ awk '$9 != "NTM" && $9 != ""' myfile.txt | less -Sn
但是当我在Perl的脚本中为qsub(即在linux集群中运行作业)命令应用它们时,如下所示:
use strict; use Data::Dumper; use Carp; use File::Basename; my $path = "/mypath/"; my @files = glob($path."*.txt"); foreach my $file ( @files ) { print "$file\n"; wy $base = basename($file,".fc-gn_".$type); my $nn = $path.$base.".out"; print "$file $nn\n"; open PIPE, "| qsub" or die $!; print PIPE <$nn EOF }
它给出了以下错误
awk: cmd. line:1: != "NTM" && !="" awk: cmd. line:1: ^ syntax error
什么是正确的方法呢?
"\"
在所有"$9"
变量之前放置一个字符将修复它.他们正在被Perl解析.
以下脚本:
print <$nn EOF
输出:
awk ' != "NTM" && !=""' >
但:
print <\$nn EOF
输出:
awk '$9 != "NTM" && $9 !=""' $file > $nn
但是,既然你想要$file
和$nn
被Perl解释,实际的行应该是:
awk '\$9 != "NTM" && \$9 !=""' $file > $nn