gpt4 book ai didi

perl - 收集具有相似列的数据

转载 作者:行者123 更新时间:2023-12-02 08:49:19 27 4
gpt4 key购买 nike

我想在 unix 中过滤文本文件中的数据。我在 unix 中有如下文本文件:

A 200
B 300
C 400
A 100
B 600
B 700

我如何根据 awk 中的上述数据修改/创建如下数据?

A 200 100
B 300 600 700
C 400

我不太擅长 awk,我相信 awk/perl 最适合这个。

最佳答案

awk 'END {
for (R in r)
print R, r[R]
}
{
r[$1] = $1 in r ? r[$1] OFS $2 : $2
}' infile

如果第一个字段中值的顺序很重要,将需要更多代码。解决方案将取决于您的 awk 实现和版本。

解释:

r[$1] = $1 in r ? r[$1] OFS $2 : $2

将数组 r 元素 $1 的值设置为:

  • 如果 key $1 已经存在:r 中的 $1,追加 OFS $2现有值(value)
  • 否则设置为$2的值

表达式 ? if true : if false 是三元运算符。参见 ternary operation了解更多。

关于perl - 收集具有相似列的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9733547/

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