2015-07-28 2 views
1

Я пытаюсь использовать команду csplit в файле 700 Mo. Я хотел бы разбить файл на 30 файлов мелких файлов и также уважать имя тега, которое я использую, чтобы запустить новый файл.shell: csplit command

<head> 
<test>1 </test> 
</head> 

<head> 
<test>2 </test> 
</head> 

<head> 
<test>3 </test> 
</head> 
... 
<head> 
<test> 80 </test> 
</head> 

Предположим, у меня есть 80 групп тегов, поэтому я хотел бы генерировать ровно 30 файлов. Так как я могу это сделать с помощью csplit. начале я знаю,

csplit output_prefix File '/<head>/' '{*}' 

ответ

2

Обнаружив csplit полдела! Это должно работать:

% csplit --prefix File --elide-empty-files foo.xml '/<head>/' '{*}' 
33 
33 
... 

% ls 
File00 File01 File02 ... foo.xml 

Важна опция/аргумент. Попробуйте csplit --help, чтобы просмотреть все возможные варианты.

% csplit --help 
Usage: csplit [OPTION]... FILE PATTERN... 
+0

спасибо, что я столкнулся с проблемой определения количества генерируемых файлов. Как я могу исправить количество сгенерированных файлов, потому что в зависимости от пользователя у меня может быть 40 или более – iceman225

+0

Все 'csplit' могут делать, разделяются на шаблон. Если вы хотите только 30 файлов, но есть 40 групп, то ваш последний файл имеет 10 дополнительных групп, если вы его ограничили. Вы можете ограничить количество разделов последним аргументом. В этом случае измените '{*}' на '{30}'. –