LINUX.ORG.RU

[Shell]Разрезать файл на несколько

 


0

0

Добрый день ЛОР.

Задача, есть большой текстовый файл вида:

Separator
...
...
Separator
...
...
...
Separator
...
...
...

В качестве Separator выступает некоторая строка. Нужно разрезать этот файл на несколько, так чтобы в каждом были блоки текста, которые в исходном файле находятся между двумя Separator'ами.

Нужно решение на Shell'e, так как написать на Си например я это смогу без проблем, но хотелось бы красивого решения средствами Shell'a.


#!/bin/bash

N=0
V=0

while read i
do
    if [ "$i" = "Separator" ]
    then
        if [ "$V" = "1" ]
        then
            V=0
            N=$((N+1))
        fi
    else
        V=1
        echo $i >> file-$N
    fi
done < input

anonymous
()
Ответ на: комментарий от sdio

Чтобы строка /Separator/ не попала в выходные файлы

awk '/Separator/ {i=i+1; file="out_"i; getline} 
                 {print $0 > file}' input.txt
sdio ★★★★★
()
Ответ на: комментарий от ananas

Вообще получается так, что в первом файле будет пусто, a последние три строки вообще никуда не попадут, т.к. не находятся между разделителями

anonymous
()
Ответ на: комментарий от anonymous

пришел ананимус, и все испортил :)) а ведь здесь могло появиться столько великолепных примеров :))

Cy6erBr4in ★★★
()

Кстати, а если сделать IFS=«Separator» ?

Eddy_Em ☆☆☆☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.