2016-03-28 4 views
-2

すべて、AWK CSVから非空白列を印刷(及びヘッダ行を含む)

Iは、CSVライン・バイ・ラインを解析し、ライン毎にテーブルを作成するが、私は列のみを印刷したいだと空白でないフィールドのヘッダー。 サンプルデータ:

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

は私がしたい:

HEADER1,HEADER3,HEADER4 
field1,field3,field4 
+2

「awkでこれを行う簡単な方法があることはわかっています。」次に、Qを編集して私たちに表示しますあなたは試しました。そう。無料のコーディングサービスではないので、あなたの作業を示すことが期待されています。次に、コードがどのように動作しているかについての概念的な問題を修正するのに役立ちます。がんばろう。 – shellter

+0

常に1つのヘッダーと1つのレコードだけですか? – JNevill

+0

ええと、一度に1行ずつ作業しています。基本的には、1行ずつファイルをループして、それぞれからテーブルを作成しています。 – syntax

答えて

1

あなたはこの(blanks.awk)のようなスクリプトを使用することができます実行blanks.csvているファイルで

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") 
     } 

awk -f blanks.awk blanks.csv

+0

素晴らしい作品です!ありがとうございました!必要に応じて行ごとに編集することができます。 Larsを高く評価しました。 – syntax