【问题标题】:Trim top and bottom rows from CSV UNIX SH从 CSV UNIX SH 中修剪顶部和底部行
【发布时间】:2018-11-28 10:04:49
【问题描述】:

我需要使用 Unix 修剪 csv 的前 5 行和最后一行 我可以在shell script 中运行的命令。

我目前有head -n -1 file.csv | tail -n +6 file.csv > newfile.csv,它从第6行开始输出一个新的csv,这是我需要的,但是命令的第一部分失败为illegal line count -- -1

【问题讨论】:

  • 试试tail -n +6 file.csv | head -n -1...

标签: csv unix tail unix-head


【解决方案1】:

我首先完成了tail -n +6 file.csv 以删除前 5 行。

然后要删除csv 的最后一行,我必须翻转csv,所以最后一行位于顶部,我使用tail -r 命令完成了此操作。

然后我从一开始就使用相同的命令删除现在的第一行tail -n +2,最后使用tail -r 命令将csv 翻转回来。

tail -n +11 input.csv | tail -r | tail -n +2 | tail -r > output.csv

【讨论】:

    【解决方案2】:

    由于您只需要删除最后一行(以及前五行),因此您可以更简单地使用sed

    sed -e '1,5d; $d' file.csv
    

    字面意思:删除第 1 到 5 行;删除最后一行。

    如果您需要在末尾删除多行,这将不起作用; sed 通常不支持像 $-4 这样的相对运动。在这种情况下,我可能会使用edex

    { echo '1,5d'; echo '$-4,$d'; echo 'w'; echo 'q'; } | ed file.csv
    

    删除第 1,5 行;从最后一行到最后一行删除(删除最后 5 行);写入文件;退出(退出是可选的,但写入不是)。

    【讨论】:

      猜你喜欢
      • 2014-03-11
      • 1970-01-01
      • 1970-01-01
      • 2016-02-03
      • 2023-04-08
      • 1970-01-01
      • 1970-01-01
      • 2016-12-03
      • 1970-01-01
      相关资源
      最近更新 更多