7.15 csplit - разделить файл на контекстно определ©нные части contents

7.15 csplit - разделить файл на контекстно определ©нные части

Использование:
csplit [option]... input pattern...

input представляет собой имя файла или устройство стандартного ввода. Содержание выводных файлов определяется значениями аргументов pattern в соответствии с алгоритмом, который описывается ниже. Если регулярное выражение pattern не соответствует никакой строке во вводном файле, то возникает состояние ошибки. После того как все выражения pattern найдены во вводном файле, остаток вводного файла просто копируется в последний выводной файл.

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

Программа допускает следующие виды pattern.

n
Создать выводной файл содержащий строки вводного файла до строки n (не включая саму строку n). Оставшаяся часть файла будет записана во второй выводной файл. Например,
csplit crawler 10
wc *
даст в результате следующее:

[shevel@pcfarm TEST]$ csplit crawler 10

790

21371

[shevel@pcfarm TEST]$ wc *

 337 1441 22161 crawler

  9  81  790 xx00

 328 1360 21371 xx01

 674 2882 44322 total

Можно использовать два и более чисел: csplit crawler 10 14 19 39
wc *
тогда получим следующее:


[shevel@pcfarm TEST]$ csplit crawler 10 14 19 39

790

948

374

667

19382

[shevel@pcfarm TEST]$ wc *

 337 1441 22161 crawler

  9  81  790 xx00

  4  69  948 xx01

  5  31  374 xx02

  20  63  667 xx03

 299 1197 19382 xx04

 674 2882 44322 total

При этом во второй файл (xx01) попадут строки с═номера 10 по номер 13, в третий файл (xx02) - строки с номера 14 по номер 18, в четв©ртый файл (xx03) - строки с номера 19 по номер 38, а═остаток запишется в файл xx04.

/pattern/[offset]
Создать выводной файл содержащий часть вводного файла от текущей строки до (не включая) строки вводного файла, которая удовлетворяет регулярному выражению pattern. Если использован аргумент offset (десятичное целое со знаком плюс или минус), то выводится часть вводного файла до строки удовлетворяющей регулярному выражению pattern + (плюс) или - (минус) offset и одна строка, после которой начинается очередная часть ввода.

Например, мы имеем файл с именем t, который содержит тестовую последовательность:


[shevel@pcfarm TEST]$ cat t

111111

222222

333333

444444

555555

666666

Тогда последовательность команд:
csplit t 2 /333/+1
wc *
даст

[shevel@pcfarm TEST]$ csplit t 2 /333/+1

7

14

22

[shevel@pcfarm TEST]$ wc *

  7  6  43 t

  1  1  7 xx00

  2  2  14 xx01

  4  3  22 xx02

  14  12  86 total

А содержимое файлов будет следующим:

[shevel@pcfarm TEST]$ cat xx00

111111

[shevel@pcfarm TEST]$ cat xx01

222222

333333

[shevel@pcfarm TEST]$ cat xx02

444444

555555

666666

Если слеши в выражениях заменить на знаки SPMquot%" (процента) то никаких выводных файлов создаваться не будет. Таким образом, такое выражение позволяет пропустить определ©нную часть вводного файла. Например,


csplit t 2 %333%+1

В этом случае будет создано всего два выводных файла.

{repeat-count}
Повторить предыдущее регулярное выражение repeat-count раз. Число repeat-count может быть десятичным положительным целым или зв©здочкой. Зв©здочка означает, что выражение повторяется до тех пор пока не закончится ввод.

Имена выводных файлов состоят из префикса (по умолчанию xx), за которым следует суффикс. По умолчанию суффикс состоит из двух цифр (от 00 до 99).

По умолчанию, если программа csplit встретила ошибку и завершается ненормально или получает сигнал терминирования, то она удаляет все файлы созданные до получения сигнала.

Программа воспринимает следующие параметры.

-f prefix
-prefix=prefix
Использовать строку prefix в качестве префикса в именах создаваемых выводных файлов.

-b suffix
-suffix=suffix
Использовать строку suffix как суффикс в именах выводных файлов. Когда этот параметр определ©н, то строка suffix должна включать точно один символ для определения типа преобразования (как в программе printf(3)). В стоке suffix могут быть также использованы флаги определения формата, количество знаков для числа, точность преобразования. Тип преобразования должен задавать перевод двоичного числа в читаемую форму, иными словами могут быть заданы типы: d, i, u, o, x и X. Если использован данный параметр, то параметр -digits игнорируется.

-n digits
-digits=digits
Использовать суффикс размером digits цифр в именах выводных файлов. По умолчанию используется две цифры.

-k
-keep-files
Не удалять выводные файлы, даже если встретилась ошибка и программа завершилась ненормально.

-z
-elide-empty-files
Запретить генерацию выводных файлов нулевой длины.

-s
-q
-silent
-quiet
Не печатать размеры выводных файлов. По умолчанию, печатаются размеры выводных файлов в байтах.


contents
Обновлено: 16.03.2015