ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)
Понедельник, 31 марта, 2025
Сегодня у нас 1 праздник:
Международный День Резервного Копирования (World Backup Day). Пользователи сайта социальных новостей reddit предложили сделать дату 31.03 Международным днём резервного копирования, аргументируя это тем, что никогда заранее нельзя узнать, какие сюрпризы преподнесёт 1.04

6 Примеров команды csplit для начинающих в Linux

6 Примеров команды csplit для начинающих в Linux

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

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

Команда csplit в Linux

Вот как страница человека определяет команду csplit:

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

 

Ниже ее общий синтаксис:

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

 

Отдельные небольшие файлы, созданные командой csplit имеют имена, такие как xx00 и xx01.

 

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

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

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

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

1 Asia
2 Africa
3 Europe
4 North America
5 South America
6 Australia

 

И вот команда мы выполнили:

$ csplit file1 3
27
66

 

Цифры, полученные на выходе являются количество байт для файлов выполненной команды. Излишне говорить, что два файла были произведены на выходе, а именно: xx00 и xx01.

 

Содержимое этих файлов подтверждают разделение произошло на линии № 3.

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

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

csplit file1 3 {1}

 

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

$ cat xx00
1 Asia
2 Africa
$ cat xx01
3 Europe
4 North America
5 South America
$ cat xx02
6 Australia

 

Q3. Как изменить собственный префикс вместо значения по умолчанию «хх»?

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

Например, следующая команда будет создавать файлы, имеющие «htf» в качестве префикса.

csplit file1 1 -f htf

 

$ csplit file1 1 -f htf
0
93
$ ls htf*
htf00 htf01

 

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

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

$ csplit file1 1 2 {3}
13
28
36
csplit: '2': line number out of range on repetition 3
16
$ ls xx*
ls: cannot access 'xx*': No such file or directory

 

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

$ csplit -k file1 1 2 {3}
13
28
36
csplit: '2': line number out of range on repetition 3
16
$ ls xx*
xx00 xx01 xx02 xx03

 

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

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

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

csplit file1 2

 

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

csplit --suppress-matched file1 2

 

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

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

Например:

csplit -n 1 file1 2

 

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

Вывод

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

Exit mobile version