如果我有多个文件,例如
1.txt :
1;ab, bc
2;cd, de, ef
3;fgh
2.txt :
4;bc
1;cd, ef
5;ab
2;g
3.txt :
5;ef, hl
7;a, b, c
3;k, jk
1;b
6;x
假设;
是分隔符并且第一列用作ID,如何连接相应的第二列(使用例如逗号),以便输出变为
output.txt :
1;ab, bc, cd, ef, b
2;cd, de, ef, g
3;fgh, k, jk
4;bc
5;ab, ef, hl
7;a, b, c
6;x
答案 0 :(得分:2)
awk
救援!
$ awk -F";" '{a[$1]=a[$1]?a[$1]","$2:$2}
END{for(k in a) print k";"a[k]}' file{1,2,3} | sort
1;ab, bc,cd, ef,b
2;cd, de, ef,g
3;fgh,k, jk
4;bc
5;ab,ef, hl
6;x
7;a, b, c
答案 1 :(得分:0)
因为join(1)
用于连接两个文件,输入必须是排序,所以为什么要这么麻烦。 awk来源:
#!/usr/bin/env awk -f
BEGIN { FS = ";" }
FNR==NR { a[$1] = $2; next}
{
if ($1 in a) {
a[$1] = a[$1] ", " $2
} else {
a[$1] = $2;
}
}
END {
for (i in a) {
printf("%s%s%s\n", i,FS,a[i]);
}
}