从csv文件中删除标题和空白行

时间:2016-08-02 06:28:52

标签: linux csv sed

我有一堆csv文件来自其他系统的每日Feed。

在将文件加载到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 个答案:

答案 0 :(得分:3)

你可以这样组合:

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

答案 1 :(得分:3)

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

也应该完成这项工作,并且会创建file.csv.bak的备份。

这是怎么回事?

  • 1!处理以下命令,但第1行除外。!为否定。
  • /^$/检查空行。
  • 在上面的模式检查之后的
  • !p将打印该行,如果由于否定(!)而不为空。
  • -i或就地编辑选项可确保更改直接反映在文件中。