Команды Linux · 3 min read · Sep 14, 2025

Команда Linux Csplit: Объяснение для начинающих (6 примеров)

Команда Linux csplit — это универсальная утилита, используемая для разделения файла на несколько сегментов на основе заданных контекстных строк или шаблонов. В отличие от команды split, которая делит файлы по размеру, csplit позволяет пользователям определять точки разделения, используя номера строк, регулярные выражения или их комбинацию, что делает ее идеальной для работы с текстовыми файлами с предсказуемой структурой. Команда генерирует выходные файлы с именами, назначенными последовательно, с заданным префиксом и числовыми суффиксами, которые можно настроить. Эта гибкость особенно полезна для таких задач, как извлечение разделов из файлов журналов, разбивка конфигурационных файлов или подготовка текстовых данных для обработки другими скриптами или приложениями.

В этом руководстве мы обсудим основы этого инструмента и научимся его использовать. Но прежде чем мы это сделаем, стоит упомянуть, что все команды/инструкции, упомянутые здесь, были протестированы на Ubuntu 24.04.

Команда Linux Csplit

Вот как страница man команды определяет ее:

csplit - разделить файл на секции, определенные контекстными строками

Следующий синтаксис является общим:

csplit [OPTION]... FILE PATTERN...

Отдельные небольшие файлы, созданные csplit, имеют имена, такие как xx00 и xx01. Следующее определение — взятое из страницы man команды — должно прояснить ситуацию:

Выводить части FILE, разделенные PATTERN(ами), в файлы 'xx00', 'xx01', ..., и выводить байтовые
счета каждой части на стандартный вывод.

Следующие примеры в формате вопрос-ответ должны дать вам хорошее представление о том, как работает команда csplit.

Вопрос 1. Как разделить файлы на основе количества строк?

Предположим, ваш файл содержит шесть строк, и требуется разделить этот файл на третьей строке. Это можно сделать, передав ‘3’ в качестве аргумента командной строки после команды и имени файла.

Например, в нашем случае файл file1 содержал следующие строки:

1       Азия  
2      Африка  
3      Европа  
4   Северная Америка  
5   Южная Америка  
6      Австралия

И вот команда, которую мы выполнили:

csplit file1 3

Числа, произведенные в выводе, — это байтовый счет для файлов, которые команда произвела. В выводе было создано два файла, а именно xx00 и xx01.

Содержимое этих файлов подтверждает, что разделение произошло на третьей строке.

Вопрос 2. Как разделить файлы, используя регулярные выражения?

Вы также можете использовать регулярные выражения с командой csplit. Например, в предыдущем случае, если вы хотите, чтобы инструмент повторил шаблон еще раз, вы можете сделать это, используя следующую команду:

csplit file1 3 {1}

Таким образом, в этом случае было создано три выходных файла:

разделение файлов с использованием регулярных выражений

Вопрос 3. Как иметь пользовательский префикс вместо стандартного ‘xx’?

По умолчанию файлы, которые csplit производит в выводе, имеют ‘xx’ в качестве префикса. Однако, если вы хотите, вы можете изменить префикс, используя командный параметр -f, который требует новый префикс в качестве входных данных.

Например, следующая команда создаст файлы с префиксом ‘htf’.

csplit file1 1 -f htf

Вопрос 4. Как заставить csplit не удалять выходные файлы в случае ошибки?

Команда csplit по умолчанию удаляет выходные файлы (любые, если они были созданы) сразу после обнаружения ошибки. Например, следующий скриншот подтверждает, что в конечном итоге не был создан ни один выходной файл:

Однако вы можете изменить это поведение, используя опцию -k в команде. Например, та же команда была выполнена снова, но с этой опцией, и выходные файлы на этот раз не были удалены.

Вопрос 5. Как подавить строки, которые соответствуют входному шаблону?

Команда csplit также позволяет подавлять строки, которые соответствуют входному шаблону. Опция, о которой идет речь, — –suppress-matched.

Например, следующая команда разделяет файл (file1) на 2-й строке (xx00 будет содержать 1-ю строку, в то время как xx11 будет содержать остальные строки).

csplit file1 2

Но если вы хотите подавить 2-ю строку, вы можете выполнить следующую команду:

csplit --suppress-matched file1 2

Вопрос 6. Как использовать пользовательское количество цифр вместо стандартных 2?

Так же, как и сам префикс, количество цифр, которые следуют за префиксом в именах выходных файлов, также можно настроить. Так что, предположим, вы хотите иметь имена, такие как xx000 и xx0001, вы можете сделать это, используя командный параметр -n, который требует входного числа, обозначающего новое количество цифр.

Например:

csplit -n 1 file1 2

Вышеуказанная команда создаст имена файлов, такие как xx0, xx1 и т. д.

Заключение

Обычному пользователю командной строки Linux может не понадобиться разделение на ежедневной основе, но это важная утилита, о которой вы должны хотя бы знать. Мы рассмотрели большинство основных примеров и параметров командной строки здесь. Попробуйте их, а затем перейдите на страницу man инструмента, чтобы узнать больше о нем.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.