在满足【自定义】行相等情况下,对其它需要的字段做合并
场景:
| 之前 | 之后 | |
|---|---|---|
| A 1 A 2 B 3 C 4 C 5 C 6 |
==> | A ('1', '2') B ('3') C ('4', '5', '6') |
实现:
$ awk '{
lp[$1]=length(lp[$1])==0?"'\''"$2"'\''":lp[$1]", '\''"$2"'\''"
}
END{
for (var in lp)
print var, "("lp[var]")"
}
' Test.txt
原理
lp[] 可视为字典
首次访问时 lp[$1] 为空,赋值为 '$2',之后再次访问时,则赋值为 lp[$1] + , '$2'。
具体执行过程:
1:
lp[A]='1'
2:lp[A]='1', '2'
3:lp[A]='1', '2'lp[B]='3'
...
6:lp[A]='1', '2'lp[B]='3'lp[C]='4', '5', '6'
最后循环输出 lp[] 中的结果!