2016-08-02 28 views
2

私はcsvファイルの束を他のシステムから毎日のフィードの形で提供しています。csvファイルからヘッダーと空白行を削除する

ファイルをHDFS上にロードし、その上に外部テーブルを作成する前に、ヘッダといくつかのオプションとして空白行をファイルから削除する必要があります。

現在、私はHDFS

//remove blank lines 
sed -i '/^\s*$/d' file_20160802.csv 

//remove header 
sed -i 1d file_20160802.csv 

//put file on HDFS 
hdfs dfs -put file_20160802.csv /raw/abc/20160802/ 

上のファイルを置く前に、ヘッダーと空白を削除するために働く2つの段階のプロセスは、私はすべての一時ファイルを作成せずに2つのステップを組み合わせることができます方法はありますか?

答えて

3

あなたはこのように組み合わせることができます。

sed -i '1d; /^\s*$/d' file 
+1

Thanks heaps @sat !! –

3
sed -ni.bak '1!{/^$/!p}' file.csv 

file.csv.bakでジョブとバックアップが作成されます行う必要があります。

この話は何ですか?ライン1 !を除く

  • 1!プロセスは、次のコマンドは否定です。
  • /^$/は空の行をチェックします。
  • !p上記のパターンチェックに続く行は、否定(!)のために空でない場合に行を印刷します。
  • -iまたはインプレース編集オプションでは、変更がファイルに直接反映されます。
+0

あなたは1!{/^$ /!p}の部分が何をしているのか説明していただけますか? –

+1

@VikasSaxena:編集をご覧ください。 – sjsam

+1

ありがとうございました。私は努力を感謝します!これは実際に私の問題の別の解決策です! –

関連する問題