Команда csplit
Команда csplit делит на части текстовые файлы, основываясь на поиске строк, удовлетворяющих заданному регулярному выражению. По умолчанию
файл делится на две части: в первой части — все строки до вхождения стро- ки, удовлетворяющей регулярному выражению, и во второй части — все ос- тальные строки, начиная с той, которая удовлетворила искомому регулярно- му выражению. Имеется, однако, возможность продолжить поиск либо заданное количество раз, либо повторить его столько раз, сколько раз встре- чается строка, удовлетворяющая регулярному выражению (пример П2.5).
Пример П2.5. Деление текстового файла на части |
$ cat sfdisk.txt
# sfdisk -l
Disk /dev/sda: 19457 cylinders, 255 heads, 63 sectors/track
Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0
Device | Boot Start | End #cyls | #blocks | Id System |
/dev/sda1 | 0+ | 1073- 1074- | 27 Unknown | |
end: (c,h,s) expected (1023,254,63) found (1023,239,63) | ||||
/dev/sda2 | 1073+ | 8854- | 7782- | 62501953+ 7 HPFS/NTFS |
start: | (c,h,s) | expected | (1023,254,63) found (1023,239,63) | |
/dev/sda3 | * 8855 | 85160565 5 Extended | ||
/dev/sda4 | - | 0 0 Empty | ||
/dev/sda5 ris | 19083+ | 374- | 3004123+ 82 Linux swap / Sola- | |
/dev/sda6 | 8855+ | 3656- | 29366757 83 Linux | |
/dev/sda7 | 12511+ | 6572- | 52789558+ 83 Linux |
$ csplit sfdisk.txt /sda[0-9]/ {*} 209
$ ls xx??
xx00 xx01 xx02 xx03 xx04 xx05 xx06 xx07
$ cat xx06
/dev/sda6 8855+ 12510 3656- 29366757 83 Linux
В примере П2.5 выведено содержимое текстового файла sfdisk.txt, содержа- щего пример работы команды sfdisk –l. Этот файл был разделен на части с помощью команды csplit. Она разделила файл на столько частей, сколько встретилась искомая строка, удовлетворяющая регулярному выражению sda[0-9]. В результате образовались файлы xx00, ..., xx07, содержимое пред- последнего файла показано.
Дата добавления: 2015-06-12; просмотров: 673;