我有一个包含9列的csv文件。某些行缺少第4列和第5行,这意味着这些行只有7列。我正面临使用此文件的问题,因为它是其他一些应用程序。
有没有办法可以为有7列的行添加空列4和5。
共有1960行,120行有7列。
我试过了:
awk -F , 'NF==7' file1.csv
提取包含7列的行,但不知道如何将其作为条件检查,并在这些行的中间添加2个空列。
答案 0 :(得分:1)
首先缺少OP忘记发布的测试材料:
$ cat > foo
1,2,3,4,5,6,7,8,9
1,2,3,6,7,8,9
然后,在awk中:
$ awk 'BEGIN { FS=OFS="," }
NF==7 { for(i=NF;i>=4;i--) $(i+2)=$i }
# was: NF==7 { nf=NF; for(i=nf;i>=4;i--) $(i+2)=$i }
1' foo
1,2,3,4,5,6,7,8,9
1,2,3,6,7,6,7,8,9
请注意,原始$4
和$5
具有原始值。可以通过将$(i+2)=$i
更改为{ $(i+2)=$i; $i="" }
来改变这种情况。