Awk 使用命令行将唯一的行表转换为列

Awk 使用命令行将唯一的行表转换为列,awk,command-line,text-processing,data-analysis,Awk,Command Line,Text Processing,Data Analysis,我的问题是转换以下文本: $ 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( $1 ~ /^M/ ){ m = $1; } else { print

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

$ 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( $1 ~ /^M/ ){ m = $1; } else { print $m,$1; }}' data.txt
V100    V100
V101    V101
V102    V102
V102    V102
V200    V200
V201    V201
V202    V202
正如你所看到的,它不起作用。其想法是将M行存储在变量中,然后将其打印在V行旁边。怎么了?命令行中还有其他选项吗


提前谢谢

awk
救援

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

awk
救援

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

$m
是bash,在awk中它们是普通变量。
$m
是bash,在awk中它们是普通变量。