给出这样的文件:
foo,1,2,3
bar,2,3,4
too,6,2,3
是否可以从命令行生成:
foo,1,0
foo,2,1
foo,3,2
bar,2,0
bar,3,1
bar,4,2
too,6,0
too,2,1
too,3,2
答案 0 :(得分:0)
当询问如何将一种形式的数据转换为另一种形式的数据时,通常最好非常明确地确定转换的确切含义。在这种情况下,它似乎很明显,但谁知道呢?
这 -
awk -F, 'BEGIN{OFS=","}{print $1,$2,0;print $1,$3,1;print $1,$4,2;}' ORIGINAL_FILE.dat
- 将给出你所展示的转型。它假设您的输入数据总是恰好是4行。你不说,所以谁知道呢?它假设一个特定的转换,但其他可能是可能的 - 也就是说,它假定输出中的第三列是输入数据中前一项的列的零索引号,而不是第一列。
答案 1 :(得分:0)
awk
救援!
$ awk 'BEGIN{FS=OFS=","}
{for(i=2;i<=NF;i++) print $1,$i,c[$1]++}' file
foo,1,0
foo,2,1
foo,3,2
bar,2,0
bar,3,1
bar,4,2
too,6,0
too,2,1
too,3,2