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

Linux 从csv文件中删除标题和空行,linux,csv,sed,Linux,Csv,Sed,我有一堆来自其他系统的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_20

我有一堆来自其他系统的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/

有没有一种方法可以在不创建任何临时文件的情况下组合这两个步骤?

您可以这样组合:

sed -i '1d; /^\s*$/d' file
还应执行此任务,并将创建带有
file.csv.bak
的备份

这是怎么回事?

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

谢谢@sat!!你能解释一下1是什么吗!{/^$/!p}部分是什么?非常感谢。我感谢你的努力!!这实际上是解决我问题的另一个办法!!
sed -ni.bak '1!{/^$/!p}' file.csv