首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >perl中的系统命令( sed )

perl中的系统命令( sed )
EN

Stack Overflow用户
提问于 2021-10-03 14:21:43
回答 1查看 88关注 0票数 1

我在perl输入文件句柄循环(而FH)中,我需要对该循环中的另一个文件执行搜索和删除操作。

我希望对循环中的文件执行sed操作,并希望捕获命令/sed到数组变量的输出。

就像这样:

代码语言:javascript
复制
@flops_ = `sed '/$clkname[-2]/d' occ.txt'` 

做这个手术最好的方法是什么?

occ.txt

代码语言:javascript
复制
/server/home/ramneek/kings/abc_occ/flop0/Q
/server/home/ramneek/kings/abc_occ/flop1/Q
/server/home/ramneek/kings/def_occ/flop0/Q
/server/home/ramneek/kings/def_occ/flop1/Q
/server/home/ramneek/kings/xyz_occ/flop0/Q
/server/home/ramneek/kings/xyz_occ/flop1/Q

abc,def,xyz是变量。在每个父循环中,clkname-2将得到这些变量。在每个循环中,我需要删除各自的变量匹配行。

在父并行循环的第一次迭代中,@flops_应该看起来类似于由\n字符分隔的数组。

代码语言:javascript
复制
/server/home/ramneek/kings/def_occ/flop0/Q
/server/home/ramneek/kings/def_occ/flop1/Q
/server/home/ramneek/kings/xyz_occ/flop0/Q
/server/home/ramneek/kings/xyz_occ/flop1/Q

在第二次迭代中,@flops_应该是

代码语言:javascript
复制
/server/home/ramneek/kings/abc_occ/flop0/Q
/server/home/ramneek/kings/abc_occ/flop1/Q
/server/home/ramneek/kings/xyz_occ/flop0/Q
/server/home/ramneek/kings/xyz_occ/flop1/Q

诸若此类。蒂娅。

EN

回答 1

Stack Overflow用户

发布于 2021-10-03 18:09:59

最好的方法是用perl完成所有操作;将文件的行读入数组一次,在循环中使用grep筛选出不想要的元素。

代码语言:javascript
复制
# read the lines of occ.txt into an array 
# (or use File::Slurper or Path::Tiny to do it)
open my $focc, "<", "occ.txt" or die "Couldn't open occ.txt: $!";
my @occ = <$focc>;
chomp @occ;
close $focc;

...;

while (<$fh>) {
    ...;
    # Filter out elements
    my @flops_ = grep { not /$clkname[-2]/ } @occ;
    ...;
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69425725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档