我想将多个列转换为行。
e.g
输入:
A,0,10,12,14,16,2,
B,10,10P
输出:
A,0,0
A,10,10
A,12,12
A,14,14
A,16,16
A,2,2
B,10,10
B,10P,10p
我尝试但不确定如何重复某些列。
awk '{FS=",";OFS="\n"}{print $1, $2, $3, $4, $5}' filename
答案 0 :(得分:3)
这可以是一种方式:
$ awk 'BEGIN{FS=OFS=","}{for (i=2;i<=NF; i++) print $1, $i, $i}' file
A,0,0
A,10,10
A,12,12
A,14,14
A,16,16
A,2,2
B,10,10
B,10P,10P
BEGIN{FS=OFS=","}
将输入和输出字段分隔符设置为逗号。for (i=2;i<=NF; i++) print $1, $i, $i
遍历第二个字段,打印第一个字段加上第二个字段。请注意,您的尝试awk '{FS=",";OFS="\n"}{print $1, $2, $3, $4, $5}' filename
在每一行都设置了FS
和OFS
,而最好在BEGIN{}
块中执行一次。
答案 1 :(得分:0)
这可能适合你(GNU sed):
sed -r 's/^([^,]+)(,[^,]+)/&\2\n\1/;//P;D' file