CSPLIT(1)
НАЗВАНИЕ
csplit - разбиение файла на части по контексту
СИНТАКСИС
csplit [-s] [-k] [-f префикс] файл арг1 [... аргn]
ОПИСАНИЕ
Команда csplit читает файл и разбивает его на (n+1)
частей (секций), определяемых аргументами арг1,...,
аргn. По умолчанию, секции помещаются в файлы с именами
xx00,..., xxn; n не может быть больше 99. Границы секций определяются следующим образом:
00 От начала файла до строки (не включая ее), указываемой аргументом арг1.
01 От строки, указываемой аргументом арг1, до строки,
указываемой аргументом арг2.
.
.
.
n От строки, указываемой аргументом аргn, до конца
файла.
Если вместо имени файла указан -, используется стандартный ввод.
Опции команды csplit таковы:
- -s
- Обычно команда csplit выдает количество символов
для каждого созданного файла. Задание опции -s подавляет эту выдачу.
- -k
- Обычно в случае ошибки команда csplit удаляет созданные файлы. При наличии опции -k созданные файлы
остаются без изменений.
- -f префикс
- Именовать создаваемые файлы так: префикс00,...,
префиксn. По умолчанию имена файлов суть xx00,...,
xxn.
Аргументы команды csplit (арг1,...,аргn) могут быть
комбинацией следующих конструкций:
- /выражение/
- Создается файл для секции, которая начинается с
текущей строки и продолжается до строки (не включая ее), содержащей выражение. За этим аргументом
может следовать знак + или - и величина смещения в
строках (например, /Page/-5). Граничная строка
становится текущей.
- %выражение%
- Этот аргумент обрабатывается так же, как и предыдущий, за исключением того, что для очередной секции файл не создается.
- номер_строки
- Создается файл для секции, которая начинается с
текущей строки и продолжается до строки с заданным
номером (не включая ее). Эта строка и становится
текущей.
- {число}
- Коэффициент повторного выполнения. Этот аргумент
может следовать за любым из приведенных выше. Если
он следует за аргументом типа выражение, то этот
последний применяется еще заданное число раз. Если
он следует за аргументом типа номер_строки, то с
текущей строки файл разбивается на число секций,
каждая из которых содержит номер_строки строк.
Заключайте в кавычки все аргументы типа выражение, которые содержат пробелы или другие символы, имеющие значение для интерпретатора команд shell. Выражение не может содержать символ перевода строки. Команда csplit не
изменяет исходный файл; удаление исходного файла возлагается на пользователя.
ПРИМЕРЫ
- Разобьем файл f1, содержащий КОБОЛ-программу, на четыре части:
csplit -f cobol f1 '/procedure division/' \
/par5./ /par6./
В результате выполнения этой команды создаются четыре
файла: cobol00,...,cobol03. После того, как полученные
файлы будут отредактированы, их можно об единить командой
cat cobol0[0-3] > f1
Заметим, что команды этого примера перезаписывают исходный файл f1.
- Команда
csplit -k f2 100 {99}
разбивает файл f2 через каждые 100 строк до 10000-ой
строки. Указание опции -k гарантирует сохранение созданных файлов, если исходный файл содержит менее 10000
строк (однако сообщение об ошибке все равно будет выдано).
- Разбиение C-программы:
csplit -k prog.c '%main(%' '/^}/+1' {20}
Если предположить, что в программе prog.c все функции
заканчиваются правой фигурной скобкой }, стоящей в начале строки, то команда этого примера помещает все
функции (не более 21) в отдельные файлы.
СМ. ТАКЖЕ
ed(1), fsplit(1), sh(1), split(1).
regexp(5) в Справочнике программиста.
ДИАГНОСТИКА
Самоочевидна, за исключением сообщения:
аргумент - out of range
которое означает, что заданный аргумент не указывает на
строку, находящуюся между текущей и последней строками
файла.