gpt4 book ai didi

arrays - 如何使用 Perl 剪切数组中字符串的第二列

转载 作者:行者123 更新时间:2023-12-05 08:49:11 25 4
gpt4 key购买 nike

我有下面的代码片段来读取命令输出并将其输入数组 (@ret)。

my @ret = `$cmd`;
chomp @ret;
foreach my $line (@ret)
{
print $line;
}

这是 $CMD 输出,同样的内容被写入@ret 数组。

(154) "1.T" Oct 15, 2020 7:05 AM
(159) "1.S" Oct 14, 2020 7:03 AM
(161) "1.R" Oct 13, 2020 7:03 AM
(163) "1.Q" Oct 11, 2020 7:06 AM
(164) "1.P" Oct 10, 2020 7:06 AM
(166) "1.N" Oct 8, 2020 1:53 AM
(167) "1.K" Oct 5, 2020 7:06 AM
(168) "1.J" Oct 4, 2020 4:44 PM
(169) "1.I" Oct 3, 2020 3:54 PM
(170) "1.H" Oct 3, 2020 7:02 AM

不确定,如何从此输出中提取用双引号引起来的第二列。有人可以帮助或提供一些意见。谢谢。

最佳答案

您可以通过将正则表达式直接应用于数组来做到这一点:

my @ret = `$cmd`;
s/(^[^"]+")|("[^"]+)//g for @ret;

基本上,正则表达式会删除第一个双引号之前的所有内容(包括双引号本身),以及最后一个双引号之后的所有内容(包括在内)。

考虑以下演示:

my @ret = (
q/(154) "1.T" Oct 15, 2020 7:05 AM/,
q/(159) "1.S" Oct 14, 2020 7:03 AM/,
q/(161) "1.R" Oct 13, 2020 7:03 AM/,
q/(163) "1.Q" Oct 11, 2020 7:06 AM/,
q/(164) "1.P" Oct 10, 2020 7:06 AM/,
q/(166) "1.N" Oct 8, 2020 1:53 AM/,
q/(167) "1.K" Oct 5, 2020 7:06 AM/,
q/(168) "1.J" Oct 4, 2020 4:44 PM/,
q/(169) "1.I" Oct 3, 2020 3:54 PM/,
q/(170) "1.H" Oct 3, 2020 7:02 AM/,
);

s/(^[^"]+")|("[^"]+)//g for @ret;
print "$_\n" for @ret;

产量:

1.T
1.S
1.R
1.Q
1.P
1.N
1.K
1.J
1.I
1.H

关于arrays - 如何使用 Perl 剪切数组中字符串的第二列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64418037/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com