繁体   English   中英

在perl中使用bash命令

[英]using bash command in perl

我有短的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}');

谢谢你的帮助......

system()的返回值是您执行的命令的返回状态。 如果你想要输出,请使用反引号:

@array = `cat /path/example.txt | grep mail | awk -F, {print \$1} | awk -F= {print \$2}`;

在列表上下文中计算时(例如,当返回值分配给数组时),您将获得输出行(如果没有输出,则为空列表)。

尝试:

@array = `cat /path/example.txt | grep mail | awk -F, {print \$1} | awk -F= {print \$2}')`;

注意到使用反引号并且美元符号需要被转义,因为qx运算符将默认插值(即它将认为$ 1是Perl变量而不是awk的参数)。

无法帮助制作一个纯粹的perl版本...应该工作相同,如果我正确记得我很少awk。

use strict;
use warnings;

open A, '<', '/path/example.txt' or die $!;
my @array = map { (split(/=/,(split(/,/,$_))[0]))[1] . "\n" } (grep /mail/, <A>);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM