如何根据第一列将多列拆分为两列

如何根据第一列将多列拆分为两列

我有一个制表符分隔的列文本,如下所示

A    1   12  13
B    3   4   5 
C    6   17   8
D    19   10  11

我怎样才能像下面这样转换上表

A    1
A    12
A    13
B    3
B    4
B    5
C    6
C    17
.
.
.

答案1

使用 awk:

$ awk '{for (i=2;i<=NF;i++) print $1,$i}' file
A 1
A 12
A 13
B 3
B 4
B 5
C 6
C 17
C 8
D 19
D 10
D 11

要对输出制表符进行分隔,您可以使用以下OFS变量:

$ awk -v OFS='\t' '{for (i=2;i<=NF;i++) print $1,$i}' file
A   1
A   12
A   13
B   3
B   4
B   5
C   6
C   17
C   8
D   19
D   10
D   11

相关内容