加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

对perl数组使用grep和sed等unix命令

发布时间:2020-12-16 06:07:14 所属栏目:大数据 来源:网络整理
导读:我如何grep perl数组中的某些模式并使用sed命令并将输出保存为另一个数组,如下所示 my @modifiedfiles=`echo @files | grep -E '(DataFiles|Pfgas|Startups)' | sed -e 's/.*something//g; s/#.*$//g;'` 解决方法 你没有 – 这没有意义:) Perl有grep和map内
我如何grep perl数组中的某些模式并使用sed命令并将输出保存为另一个数组,如下所示

my @modifiedfiles=`echo @files | grep  -E '(DataFiles|Pfgas|Startups)' | sed -e 's/.*something//g; s/#.*$//g;'`

解决方法

你没有 – 这没有意义:)

Perl有grep和map内置:

my @filteredfiles = grep { /(DataFiles|Pfgas|Startups)/ } @files;
my @modifiedfiles = map { s/.*something//g; s/#.*$//g; $_ } @filteredfiles;

也可以一步到位:

my @modifiedfiles =
    map { s/.*something//g; s/#.*$//g; $_ }
    grep { /(DataFiles|Pfgas|Startups)/ } @files;

但Perls grep和map的行为与命令行grep和map的行为不同.有关详细信息,请参阅文档

> http://perldoc.perl.org/functions/grep.html
> http://perldoc.perl.org/functions/map.html

无论如何你真的想要这样做,它有可能是这样的:

use IPC::Open2;

$pid = open2(*CHLD_OUT,*CHLD_IN,"grep  -E '(DataFiles|Pfgas|Startups)' | sed -e 's/.*something//g; s/#.*$//g;"
);

for my $file (@files) {
    print CHLD_OUT $file."n";
    my $result_fn = <CHLD_IN>;
    chomp $result_fn;
    push @modifiedfiles,$result_fn;
}

不,你不想这样:)它有很多缺点和失败的高风险.我假设如果grep过滤掉文件,脚本甚至会开始阻止.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读