AWK从CSV打印非空白列(并包括标题行)

时间:2016-03-28 18:15:12

标签: bash shell awk

所有

我正在逐行解析CSV并为每行创建一个表,但我只想打印非空字段的列和标题。 样本数据:

HEADER1,HEADER2,HEADER3,HEADER4
field1,,field3,field4

我想:

HEADER1,HEADER3,HEADER4
field1,field3,field4

1 个答案:

答案 0 :(得分:1)

您可以使用这样的脚本(blanks.awk):

BEGIN   { FS=OFS=","}
NR == 1 { for ( i = 1; i<= NF; i++ ) hdrs[ i ] = $i
          next
        }
1       { for( i =1; i <= NF; i++){
            printf("%s", ($i!="" ? hdrs[ i ] OFS: "") )
          }
          printf("\n")
          for( i =1; i <= NF; i++){
            printf("%s", ($i!="" ? $i OFS: "") )
          }
          printf("\n")
        }

将blanks.csv作为您的文件,请运行以下命令:awk -f blanks.awk blanks.csv