Разделение файла на две части (за один проход)

На самом деле это единственный раздел про unix на этом форуме

Модератор: /dev/random

Аватара пользователя
Minton
Сообщения: 1580
Статус: openSUSE Localization Team
ОС: openSUSE Tumbleweed x86-64

Разделение файла на две части

Сообщение Minton » 16.03.2016 16:21

Коллеги, подскажите, пожалуйста. Можно ли натравить grep или ещё что-то на файл/поток, чтобы за один проход выбрать строки, соответствующие заданному шаблону, в один файл, а все остальные - в другой. Сейчас приходится сначала делать grep, а потом grep -v для одного и того же файлы - душа просит оптимизации, чтобы grep два раза не вызывать и весь многомегабайтный файл не шерстить второй раз.
Мы переехали: Русский раздел на forums.opensuse.org :)

"Настоящие мужчины используют поиск" ©Goodvin
Спасибо сказали:

Аватара пользователя
/dev/random
Администратор
Сообщения: 4866
ОС: Gentoo

Re: Разделение файла на две части

Сообщение /dev/random » 16.03.2016 16:41

Не проверял работоспособность, пишу по памяти, могут быть ошибки.

sed $'/шаблон/{w выход1\nd}' > выход2
Спасибо сказали:

Аватара пользователя
nerve
Сообщения: 267
ОС: OpenBSD

Re: Разделение файла на две части

Сообщение nerve » 16.03.2016 18:00

возможно так

Код: Выделить всё

sed -e '/^something*/w /tmp/result.1' -e '/^something_else*/w /tmp/result.2' source_file


Спасибо сказали:

Аватара пользователя
/dev/random
Администратор
Сообщения: 4866
ОС: Gentoo

Re: Разделение файла на две части

Сообщение /dev/random » 17.03.2016 16:31

iУведомление от модератора
Удалил флейм/оффтоп
Спасибо сказали: