awk从文件读取到数组

时间:2017-05-02 12:05:40

标签: bash awk

我收到了一些包含以下数据的文件:

1:Bob A  :Tester
2:John B :Assembler

我使用此代码在此文件上使用awk:

BEGIN{
print"ABC Computing"    
FS = ":"
}

# $1 -  id , $2 - name, $3 - position.
NF == 3{
nameArray[$1]+=$2 
}

END{
for (x in nameArray )
{print  x,  nameArray[x]}
}

我得到的输出是:

ABC Computing
1 0
2 0
3 0
4 0
5 0
6 0
7 0
8 0

我需要这样的东西:

1 Bob A 
2 John B

我无法将字符串部分存储在数组中。

谢谢

1 个答案:

答案 0 :(得分:0)

代码中的这一行nameArray[$1]+=$2会将0添加到第二个字段值(字符串),每次都会0

应该如下:

awk -F':' 'BEGIN{print "ABC Computing"}NF==3{a[$1]=$2}END{for(i in a) print i,a[i]}' file

输出:

ABC Computing
1 Bob A  
2 John B