从CSV UNIX SH修剪顶部和底部行

时间:2018-11-28 10:04:49

标签: csv unix tail unix-head

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

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

2 个答案:

答案 0 :(得分:0)

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

然后要移除csv的最后一行,我必须翻转csv,以便最后一行位于顶部,我通过使用tail -r命令来做到这一点。

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

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

答案 1 :(得分:0)

由于您只需要删除最后一行(和前五个),因此可以更简单地使用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行);写入文件;退出(退出是可选的,但写入不是可选的)。