【发布时间】:2021-11-24 06:33:25
【问题描述】:
我在一个 perl 输入文件句柄循环中,(而 FH),我需要在该循环中对另一个文件执行搜索和删除操作。
我想对循环中的文件执行 sed 操作,并希望将 command/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/Q
abc,def, xyz 是变量。在每个父循环中,clkname[-2] 都会得到这些变量。在每个循环中,我需要删除相应的变量匹配行。
在父 while 循环的第一次迭代中,
@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
等等。 TIA。
【问题讨论】:
-
“我在一个 perl 输入文件句柄循环中”:似乎问题与循环无关?您只需要更改另一个文件(不是您现在正在读取的文件),对吗?
-
是的。但我不想在父循环中读取另一个文件(我想要更改的文件)。所以,我正在寻找一个系统命令来进行搜索和删除,而不是逐行读取文件。
-
好的,你能举个文件
occ.txt的例子吗?那么系统调用后@flops_数组的内容应该是什么? -
感谢您的更新。当前的
sed命令有什么问题?看起来应该可以正常工作吧?
标签: regex perl system backticks