2016-08-02 121 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

非常感谢。我感谢努力!这实际上是我的问题的另一种解决方案! –