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中它们是普通变量。