我需要使用Unix修剪csv
的前5行和最后一行
我可以在shell script
中运行的命令。
我目前有head -n -1 file.csv | tail -n +6 file.csv > newfile.csv
,它从第6行开始输出一个新的csv,这是我需要的,但是命令的第一部分因为illegal line count -- -1
而失败
答案 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
之类的相对运动。在这种情况下,我可能会使用ed
或ex
:
{ echo '1,5d'; echo '$-4,$d'; echo 'w'; echo 'q'; } | ed file.csv
删除第1.5行;从最后一行之前的四行中删除(在末尾删除5行);写入文件;退出(退出是可选的,但写入不是可选的)。