awk梳理多文件与多维数组

  • 同时处理多份文件
  • 多维数组
  • 多文件join,虽然join可以实现多文件合并,但是只要数据少有特殊join就不能工作,用awk会更灵活
awk '
{d[$1,FILENAME]=FILENAME;f[FILENAME]=1;p[$1]=1}
END{
OFS=",\t";
for(pi in p) {
    i=0;
    for(fi in f){
        i+=1
        fo[i]=d[pi,fi]
    };
    print pi, fo[1], fo[2]; 
}
}' /tmp/1.csv /tmp/2.csv

示例

ceshiren.com: ~ seveniruby$ cat  /tmp/11
1 a
2 b

ceshiren.com: ~ seveniruby$ cat  /tmp/22
1 dd
2 ea
3 vb

ceshiren.com: ~ seveniruby$ join /tmp/11 /tmp/22
1 a dd
2 b ea

ceshiren.com: ~ seveniruby$ awk '
{d[$1,FILENAME]=$2;f[FILENAME]=1;p[$1]=1}
END{
OFS=",\t";
for(pi in p) {
    i=0;
    for(fi in f){
        i+=1
        fo[i]=d[pi,fi]
    };
    print pi, fo[1], fo[2];
}
}' /tmp/11 /tmp/22
1,	a,	dd
2,	b,	ea
3,	,	vb