当前位置:  开发笔记 > 编程语言 > 正文

当我从Perl调用它时,为什么我的awk单线程工作不起作用?

如何解决《当我从Perl调用它时,为什么我的awk单线程工作不起作用?》经验,为你挑选了1个好方法。

我使用以下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

什么是正确的方法呢?



1> paxdiablo..:

"\"在所有"$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

推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有