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

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

Модераторы: /dev/random, Модераторы разделов

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

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

Сообщение Minton »

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

"Настоящие мужчины используют поиск" ©Goodvin
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5282
ОС: Gentoo

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

Сообщение /dev/random »

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

sed $'/шаблон/{w выход1\nd}' > выход2
Спасибо сказали:
Аватара пользователя
nerve
Сообщения: 280
ОС: OpenBSD

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

Сообщение nerve »

возможно так

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

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


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

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

Сообщение /dev/random »

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