在满足【自定义】行相等情况下,对其它需要的字段做合并
场景:
之前 | 之后 | |
---|---|---|
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[]
中的结果!