Intereting Posts
openldap: добавить вспомогательный класс Простейший способ узнать, полностью ли загружено и готово приложение GTK (например, Firefox), чтобы максимизировать его меньше с несколькими файлами; команда для вывода имен файлов Файловая система mdadm raid отличается от файловой системы диска Один алиас влияет на другой псевдоним? Какова настройка в bash для globbing, чтобы контролировать, совпадает ли * с точечными файлами результат фильтра сверху Почему unsetenv () не изменяет / proc / pid / environ? Почему конвейер не работает для команды файла? Почтовый сервер CentOS 6.4 Как получить доступ к URL-адресу, отфильтрованному только для моего открытого IP-адреса вне моей сети dash: строка синтаксического анализа на две переменные Как переименовать файлы и преобразовать datestamp из DD-MM-YYYY в YYYY-MM-DD? Как использовать gunzip и tar для извлечения моего файла tar.gz в конкретный каталог, который я хочу? Ли Linux 3.x использует планировщик процессов CFS?

Как я могу перенаправить соответствующие строки в файл, а не совпадающие строки с другим файлом?

Есть ли сценарий / программа / утилита, уже доступная для следующего требования оптимизированным образом?

someCommand | tee >(grep "pattern" > LinesWhichMatch) | grep -v "pattern" > LinesWhichDoesNotMatch 

Вы можете использовать awk для этого.

 command | awk '{ if (/pattern/) { print > "match" } else { print > "nomatch" } }' 

Вот пример sed :
Примечание: команда sed w будет перезаписывать существующий файл каждый раз при запуске скрипта, но только если эта команда записи запускается; следовательно, rm

 rm -f file-{yes,not} sed -ne '/pattern/bY; w file-not' -e 'b; :Y; w file-yes' file 

Вы можете добавлять файлы в awk:

 awk '{if (/pattern/) print >>"matched"; else print >>"unmatched"; } 

или короче:

 awk '{print >>(/pattern/?"matched":"unmatched")}'