Existe um script / programa / utilitário já disponível para o seguinte requisito de maneira otimizada?
someCommand |
tee >(grep "pattern" > LinesWhichMatch) |
grep -v "pattern" > LinesWhichDoesNotMatch
text-processing
grep
tee
balki
fonte
fonte
awk
mas em que momento ele avalia o>
? Se é avaliada cada vez que o condicional aplica-se, você ia acabar com dois arquivos de uma linha ...>
imprime toda a saída no arquivo, substituindo os arquivos existentes. Não é avaliado de tal maneira que resultará em novas linhas substituindo a saída antiga da mesma instância deawk
. Ou seja, se houver várias correspondências, o arquivo "correspondência" conterá cada correspondência separada porOFS
. A diferença entre>
e>>
existe no tratamento de arquivos existentes.Aqui está um
sed
exemplo:Nota: o
w
comando sed irá substituir um arquivo existente toda vez que o script for executado, mas apenas se esse comando de gravação específico for acionado; daí orm
fonte
sed -n '/PATTERN/p;//! w file-not' infile >file-yes
Você pode anexar arquivos no awk:
ou mais curto:
fonte