使用命令行将唯一行 table 转换为列

Convert an unique line table into columns using the command line

我的问题是转换以下文本:

$ cat data.txt
M01
V100
V101
V102
V102
M02
V200
V201
V202

进入这个:

V100    M01
V101    M01
V102    M01
V102    M01
V200    M02
V201    M02
V202    M02

以V开头的行代表一个索引,M是与它们相关联的值。

我正尝试在 awk 中解决这个问题,如下所示:

$ awk '{if(  ~ /^M/ ){ m = ; } else { print $m,; }}' data.txt
V100    V100
V101    V101
V102    V102
V102    V102
V200    V200
V201    V201
V202    V202

如您所见,不起作用。这个想法是将 M 行存储在一个变量中,然后在 V 行旁边打印它。怎么了?命令行还有其他选项吗?

提前致谢!

awk 救援!

$ awk '/^M/{m=;next} {print [=10=],m}' file
V100 M01
V101 M01
V102 M01
V102 M01
V200 M02
V201 M02
V202 M02