使用命令行将唯一行 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
我的问题是转换以下文本:
$ 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