gpt4 book ai didi

sed - awk 有条件地组合多行

转载 作者:行者123 更新时间:2023-12-02 05:47:43 24 4
gpt4 key购买 nike

我想将多行不同长度的值合并到一行(如果它们与 ID 匹配)。

输入示例是:

ID:  Value:
a-1 49
a-2 75
b-1 120
b-2 150
b-3 211
c-1 289
d-1 301
d-2 322

所需的输出示例是:

ID:  Value:
a 49,75
b 120,150,211
c 289
d 301,322

我如何编写 awk 表达式(或 sed 或 grep 等)来检查 ID 是否匹配,然后将所有这些值打印到一行上?我当然可以打印它们分成不同的列,然后将它们组合起来,所以实际上问题只是有条件地打印 ID 是否匹配以及是否开始新行。

最佳答案

在 awk 中,如果您的 ID 聚集在一起:

awk 'NR==1 {print $0}
NR > 1 {sub("-.*", "", $1)}
NR == 2 {prev=$1; printf "%s %s", $1, $2}
NR > 2 && prev == $1 {printf ",%s", $2}
NR > 2 && prev != $1 {prev=$1; printf "\n%s %s", $1, $2}' your_input_file

关于sed - awk 有条件地组合多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7068314/

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