Как разбить файл и сохранить первую строку в каждом из кусочков? - PullRequest
51 голосов
/ 11 сентября 2009

Дано: Один большой файл текстовых данных (например, формат CSV) со «специальной» первой строкой (например, имена полей).

Wanted: Эквивалент команды coreutils split -l, но с дополнительным требованием, чтобы строка заголовка из исходного файла появлялась в начале каждого из полученных фрагментов.

Я предполагаю, что какая-то смесь split и head добьется цели?

Ответы [ 12 ]

1 голос
/ 21 января 2015

Мне понравилась awk-версия marco, взята из этой упрощенной однострочной, где вы можете легко указать дробную дробь настолько гранулированно, насколько вы хотите:

awk 'NR==1{print $0 > FILENAME ".split1";  print $0 > FILENAME ".split2";} NR>1{if (NR % 10 > 5) print $0 >> FILENAME ".split1"; else print $0 >> FILENAME ".split2"}' file
1 голос
/ 11 сентября 2009

Я никогда не уверен в правилах копирования скриптов прямо с сайтов других людей, но Geekology имеет хороший скрипт, который делает то, что вы хотите, с несколькими комментариями, подтверждающими, что он работает. Обязательно выполните tail -n +2, как отмечено в комментарии внизу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...