从perl调用awk不适用于解压缩重定向

时间:2017-10-13 01:22:22

标签: perl awk

以下命令在我手动运行时工作正常但是当我使用反引号或系统命令从perl脚本调用它时,它会出现此错误

  

sh:-c:第0行:意外令牌附近的语法错误`('

脚本快照:

#Find contents of myFile in zipfile and output the matched records to output.txt
$cmd = "awk -F\"|\" 'NR==FNR{hash[\$0]=1;next} \$237 in hash' $myFILE <(unzip -p $zipfile *XYZ*) >> output.txt";
$result=`$cmd`;

似乎我们不能通过perl在系统调用中调用子shell,即(解压缩...)。请告知我,因为我已经困难了几天。

1 个答案:

答案 0 :(得分:0)

这是因为命令行很可能是/ bin / bash,而perl的shell是/ bin / sh,它不支持这个意思。将zip命令放在具有管道(|)的awk之前。像这样:

#Find contents of myFile in zipfile and output the matched records to output.txt
$cmd = "unzip -p $zipfile *XYZ* | awk -F\"|\" 'NR==FNR{hash[\$0]=1;next} \$237 in hash' $myFILE >> output.txt";
$result=`$cmd`;