next up previous contents
Next: 7.16 sort - сортировать Up: 7. Программы преобразования и Previous: 7.14 split - разделить

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
Не печатать размеры выводных файлов. По умолчанию, печатаются размеры выводных файлов в байтах.


next up previous contents
Next: 7.16 sort - сортировать Up: 7. Программы преобразования и Previous: 7.14 split - разделить
Andrei Chevel
Andrei.Chevel@pnpi.spb.ru