2016-08-02 113 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/ 

之前刪除頁眉和空格有沒有一種方法,我可以結合這兩個步驟,而無需創建任何臨時文件?

回答

3

您可以結合這樣的:

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

謝謝堆@sat !! –

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

也應該做的工作,備份與file.csv.bak將被創建。

這是怎麼回事?

  • 1!過程除了第1行!是否定以下命令。
  • /^$/檢查空行。
  • !p如果由於否定而導致非空(!),則按照上面的模式檢查將打印該行。
  • -i或就地編輯選項確保更改直接反映在文件中。
+0

你能解釋1!{/^$ /!p}部分是做什麼的嗎? –

+1

@VikasSaxena:請參閱編輯。 – sjsam

+1

非常感謝。我感謝努力!這實際上是我的問題的另一種解決方案! –