我有一个包含几个字段的输入文件(input.txt):
A1 B1 C1 D1 E1
A2 B2 C2 D1 E2
A3 B3 C3 D2 E3
A4 B4 C4 D2 E4
我想追加一个关联数组的元素,
awk '{a[$4]=a[$4] $5; print a[$4]} END {for(b in a) {print a[b]}}' input.txt
我认为输出应该是(即E2连接到E1,E4连接到E3):
E1 E2
E3 E4
但输出是:
E2
E4
我不确定我的代码有什么问题?
答案 0 :(得分:1)
您的输出与您的命令不一致,但我认为您需要以下内容:
获得你想要的东西是一个天真的解决办法:
$ awk '{a[$4]=a[$4] " " $5} END {for (b in a) { print b; print a[b]}}' input.txt
D1
E1 E2
D2
E3 E4
但有两点需要注意:
for (b in a)
枚举键,第4列值不会按照它们在输入中出现的顺序出现,因为awk
枚举其[始终关联]键的顺序数组基于内部哈希值,与数组元素添加的顺序没有保证关系(通常也不保证任何特定顺序)。