我有短的bash代码
cat example.txt | grep mail | awk -F, '{print $1}' | awk -F= '{print $2}'
我想在perl脚本中使用它,并将其输出逐行放入数组中。 我尝试了这个,但没有工作
@array = system('cat /path/example.txt | grep mail | awk -F, {print $1} | awk -F= {print $2}');
感谢您的帮助...
答案 0 :(得分:11)
system()
的返回值是您执行的命令的返回状态。如果你想要输出,请使用反引号:
@array = `cat /path/example.txt | grep mail | awk -F, {print \$1} | awk -F= {print \$2}`;
在列表上下文中进行评估时(例如,当返回值分配给数组时),您将获得输出行(如果没有输出,则为空列表)。
答案 1 :(得分:8)
尝试:
@array = `cat /path/example.txt | grep mail | awk -F, {print \$1} | awk -F= {print \$2}')`;
注意到使用了反引号并且美元符号需要被转义,因为qx运算符将默认插值(即它会认为$ 1是Perl变量而不是awk的参数)。
答案 2 :(得分:2)
无法帮助制作一个纯粹的perl版本......如果我记得我的awk正确的话,应该也一样。
use strict;
use warnings;
open A, '<', '/path/example.txt' or die $!;
my @array = map { (split(/=/,(split(/,/,$_))[0]))[1] . "\n" } (grep /mail/, <A>);