我在perl输入文件句柄循环(而FH)中,我需要对该循环中的另一个文件执行搜索和删除操作。
我希望对循环中的文件执行sed操作,并希望捕获命令/sed到数组变量的输出。
就像这样:
@flops_ = `sed '/$clkname[-2]/d' occ.txt'` 做这个手术最好的方法是什么?
occ.txt
/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/Qabc,def,xyz是变量。在每个父循环中,clkname-2将得到这些变量。在每个循环中,我需要删除各自的变量匹配行。
在父并行循环的第一次迭代中,@flops_应该看起来类似于由\n字符分隔的数组。
/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_应该是
/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诸若此类。蒂娅。
发布于 2021-10-03 18:09:59
最好的方法是用perl完成所有操作;将文件的行读入数组一次,在循环中使用grep筛选出不想要的元素。
# 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;
...;
}https://stackoverflow.com/questions/69425725
复制相似问题