如何使用awk
根据列值将一个列数据拆分为多个列?
示例文件和所需的输出如下。我的bash
版本是3.2.52(1)。
$ cat examplefile
A
1
B
2
B
3
C
10
C
11
C
13
A
4
B
5
B
6
B
7
C
14
期望的输出:
$ cat outputfile
A B C
1 2 10
null B C
null 3 11
null null C
null null 13
A B C
4 5 14
null B null
null 6 null
null B null
null 7 null
或者忘记空值如何在outputfile2中获得两列?
cat examplefile2
A
1
B
2
B
3
cat outputfile2
A B
1 2
B
3
答案 0 :(得分:0)
你可以得到它:
awk 'BEGIN{l=1;ll="";} {if (l) {ll=$0;l=0;} else {if (length(a[ll])>0) {a[ll]=a[ll]","ll","$0;} else {a[ll]=ll","$0;}l=1;}} END{for (k in a){print a[k];}}' examplefile
适用于任意数量的类(A,B,C ......)。
输出结果为:
A,1,A,4
B,2,B,3,B,5,B,6,B,7
C,10,C,11,C,13,C,14
如果您想将其作为列,请快速查看以下帖子: An efficient way to transpose a file in Bash