Обрезать верхний и нижний ряды от CSV UNIX SH - PullRequest
0 голосов
/ 28 ноября 2018

Мне нужно обрезать верхние 5 строк и последнюю строку моего csv с помощью команды Unix, которую я могу запустить в shell script.

У меня в настоящее время head -n -1 file.csv | tail -n +6 file.csv > newfile.csv, это выводит новыйCSV, начиная со строки 6, что мне нужно, но первая часть команды завершается с ошибкой illegal line count -- -1

Ответы [ 2 ]

0 голосов
/ 08 марта 2019

Поскольку вам нужно только удалить последнюю строку (и первые пять), вы можете использовать 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 строк в конце);написать файл;выход (где выход не является обязательным, но запись не).

0 голосов
/ 28 ноября 2018

Сначала я сделал 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

...