Есть ли уже оптимизированный сценарий / программа / утилита для следующего требования?
someCommand |
tee >(grep "pattern" > LinesWhichMatch) |
grep -v "pattern" > LinesWhichDoesNotMatch
text-processing
grep
tee
Балки
источник
источник
awk
но в какой момент он оценивает>
? Если его оценивать каждый раз, когда применяется условное условие, вы получите два однострочных файла ...>
печатает весь вывод в файл, перезаписывая существующие файлы. Это не оценивается таким образом, что это приведет к тому, что любые новые строки будут перезаписывать старый вывод из того же экземпляраawk
. То есть, если есть несколько совпадений, файл «совпадение» будет содержать каждое совпадение, разделенноеOFS
. Разница между>
и>>
существует в обработке существующих файлов.Вот
sed
пример:Примечание:
w
команда sed будет перезаписывать существующий файл при каждом запуске сценария, но только если эта конкретная команда записи запущена; следовательноrm
источник
sed -n '/PATTERN/p;//! w file-not' infile >file-yes
Вы можете добавлять файлы в awk:
или короче:
источник