我想将多行不同长度的值合并到一行(如果它们与 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)