Existe um utilitário semelhante ao grep que me permitirá fazer pesquisas grep com operadores lógicos. Quero poder aninhar e combinar as construções lógicas livremente. Por exemplo, coisas como essa devem ser possíveis:
grep (term1 && term2) || (term1 && (term3 xor term4)) *
Sei que isso pode ser feito com vanilla grep e scripts adicionais do bash, mas meu objetivo aqui é evitar a necessidade de fazer isso.
-E
não é completamente equivalente a&&
devido ao fato de que ele é sensível fim-grep foo | grep bar
é uma maneira mais geral de fazer AND.Você pode usar perl:
fonte
Eu acredito que realiza o que você está tentando fazer. Ele
d
elimina da saída qualquer linha que não correspondaterm1
,b
sai do script (e assim imprime automaticamente) qualquer linha que permanece e que correspondeterm2
, e para as linhas que permanecem exclui qualquer que não correspondaterm3
e daquelas que não correspondemterm4
.sed
Os scripts são avaliados em ordem e todos os testes são booleanos; portanto, qualquer ação resultante de um teste afetará diretamente o comportamento das ações a seguir.fonte
Eu uso para encadear
grep
comandos para obter um AND lógico:Eu acredito que é bem direto, semelhante ao Unix e elegante.
Então você pode combinar (como o @Tushi explicou detalhadamente) com a
-E
opção para OR-ing e-v
negar.Seu exemplo específico é bastante desagradável e provavelmente se beneficiaria de algum utilitário mais poderoso (consulte a resposta do @ muru).
fonte