我用过
paste Output1.txt Output2.txt | awk '{print $1, $2, $5, $15}'
使用system(awk_commamd)在perl脚本中。 我收到了像
这样的错误awk: {print , , , }
awk: ^ syntax error
需要帮助来排序此错误
答案 0 :(得分:6)
使用纯perl复制paste
和awk
的工作:
use strict;
use warnings;
use autodie;
my @fhs = map {open my $fh, '<', $_; $fh} qw(Output1.txt Output2.txt);
while (grep {!eof $_} @fhs) {
my @lines = map {(scalar <$_>) // ''} @fhs;
chomp @lines;
my @fields = split ' ', join "\t", @lines;
print join("\t", grep defined, @fields[0,1,4,14]), "\n";
}
答案 1 :(得分:4)
这是因为Perl正在将变量插入到字符串中,而是使用单引号:
system('paste Output1.txt Output2.txt | awk \'{print $1, $2, $5, $15}\'');
或:
system(q(paste Output1.txt Output2.txt | awk '{print $1, $2, $5, $15}'));
在任何情况下,最好不要使用system
在Perl中执行此操作,以提高性能,可读性和可移植性。