Поиск по сайту:
В программировании инварианты эфемерны. (Алан.Дж.Перлис)

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

08.07.2017
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

 

Читать  Лучшие текстовые редакторы для CentOS

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

$ 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

 

Читать  Установка простого прокси на свой выделенный сервер Linux

Тем не менее, если вы хотите, вы можете изменить это поведение, используя опцию -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, чтобы узнать больше об ней.

Читать  Как повторить новую строку в Bash

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...
Поделиться в соц. сетях:


0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Это может быть вам интересно


Рекомендуемое
Linux является забавным и юмористическим. Вы не верите? Значит проверьте…

Спасибо!

Теперь редакторы в курсе.