2015-03-04 3 views
1

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

Ограничитель Я хочу использовать это:

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 

, который отделяет каждую запись.

+3

Посмотрите на утилиту 'csplit'. –

ответ

0

Если файл имеет свои ограничители на своих собственных линий вы можете сделать:

delim="-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=" 
i=1 
while read line 
do 
    if [ "$line" == "$delim" ] 
    then 
     i=$((i+1)) 
    else 
     echo $line >>your_file_$i 
    fi 
done <your_file 

Если файл не находится в такой конфигурации, это означает, что у вас есть встроенные разделители. Поэтому вам просто нужно использовать sed "s/${delim}/\r${delim}\r/g", и вы будете в этом случае.

+0

Большое спасибо! это сработало красиво! – Josh

Смежные вопросы