将新列插入CSV文件



我需要在CSV文件的第一列前面插入一个新列。我正在尝试使用awk解决方案

CSV文件

A,B,C,D,E,F
1,2,3,4,5,6
2,3,4,5,6,7
3,4,5,6,7,8
4,5,6,7,8,9

尝试的代码

awk 'BEGIN{FS=OFS=","}{$1=$1 OFS (FNR<1 ? $1 "0n0n0n0" : "col")}1'

预期结果

col,A,B,C,D,E,F
0,1,2,3,4,5,6
0,2,3,4,5,6,7
0,3,4,5,6,7,8
0,4,5,6,7,8,9    

一种方法是打印col,(如果是第一行(和0,(如果是其他行(。然后打印其余列:

awk 'NR==1 { printf("col,") } NR>1 { printf("0,") } { print }'

分解:

NR==1 {             # execute this block if it's the first line
printf("col,")
}
NR>1 {              # execute this block if it's any other line
printf("0,")
}
{                   # always execute this block
print
}

我会按照以下方式利用GNUAWK来完成这项任务,让file.csv的内容是

A,B,C,D,E,F
1,2,3,4,5,6
2,3,4,5,6,7
3,4,5,6,7,8
4,5,6,7,8,9

然后

awk 'BEGIN{FS=OFS=","}{print NR==1?"col":"0", $0}' file.csv

给出输出

col,A,B,C,D,E,F
0,1,2,3,4,5,6
0,2,3,4,5,6,7
0,3,4,5,6,7,8
0,4,5,6,7,8,9

说明:我通知GNUAWK,字段分隔符和输出字段分隔符都是逗号。对于每一行,如果它是第一行,我打印col,否则是0,然后是整行($0(。

(在gawk 4.2.1中测试(

最新更新