awk文本处理--二维数组使用一例

群友出的题:

原始文件:

$ cat file
BJ30 26
BJ30 24
BJ30 63
BJ30 70
SH41 21
SH41 30
SH41 25
SH41 25
SH41 29
SD15 34
SD15 46
SD15 20
SD15 34
TJ20 23
TJ20 32
TJ20 31
TJ20 35

处理后结果:

BJ30 SH41 SD15 TJ20
26     21     34     23
24     30     46     32
63     25     20     31
70     25     34     35
        29

代码如下:

awk '{if(!a[$1]++)b[++n]=$1;c[$1,a[$1]]=$2;if(m<a[$1])m=a[$1]}END{for(i=0;i++<n;)s=s?s"	"b[i]:b[i];print s;s="";for(i=0;i++<m;){for(j=0;j++<n;){printf c[b[j],i]?c[b[j],i]"	":"	"}print ""}}' file
原文地址:https://www.cnblogs.com/Eivll0m/p/4564938.html