Scala-like从命令行展平

时间:2016-11-30 15:25:23

标签: linux scala awk sed

给出这样的文件:

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

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