我需要在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中测试(