awk实现多行合并

需求

文件每一行有两列,需要将第一列相同的行合并。

例如:
111:aaa
22:bbb
22:ccc
合并之后变为
111:aaa
22:bbbccc

实现

例如:文件名为test.txt

cat test.txt | awk -F ':' '{a[$1]=a[$1]$2END{for(i in a) print i":" a[i]}}'

执行过程

a[] 可以看做是数组
从test.txt逐行执行a[$1]=a[$1]$2:
第一行:a[111]之前为空,执行后a[111]={空}aaa
第二行:a[22]本来为空,执行后a[22]={空}bbb
第三行:a[22]目前为bbb,执行后a[22]=bbbccc
END
执行for循环,输出a
111:aaa
22:bbbccc

你可能感兴趣的:(测试)