我有一个如下所示的CSV文件:
col1,col2,col3,col4
1,2,a,01/01
2,3,b,01/02
3,4,5,c,01/03
2,5,6,c,01/03
最后2行已附加到文件中,但它有一个额外的列(第三列)。我想从最后两行删除第三列(即第4列==“c”和第5列==“01/03”)
我想要的输出是从最后2行中删除第三列,使其只有4列:
col1,col2,col3,col4
1,2,a,01/01
2,3,b,01/02
3,4,c,01/03
2,5,c,01/03
如果可以在vim中完成,也会很好
答案 0 :(得分:3)
这是一种稍微不同的方法,可避免必须输入要包含的列列表:
awk -F, 'BEGIN {OFS=FS} NF==5 {for(i=3;i<=NF;i++){$i=$(i+1)}; NF--} 1'
具有明确列列表的解决方案也可以更紧凑地编写如下:
awk -F, 'BEGIN {OFS=FS} NF == 5 {print $1, $2, $4, $5; next} 1'
答案 1 :(得分:1)
这应该这样做
awk -F, 'BEGIN {OFS=","} {if (NF == 5) {print $1, $2, $4, $5} else {print}}' filename
答案 2 :(得分:1)
$ awk 'BEGIN{FS=OFS=","} {print $1,$2,$(NF-1),$NF}' file
col1,col2,col3,col4
1,2,a,01/01
2,3,b,01/02
3,4,c,01/03
2,5,c,01/03