Como usar corretamente / usr / xpg4 / bin / grep -F

1

Eu tenho um problema ao produzir a filtragem de hanzoMollusc (2) do meu grep.

https://node.hanzo.com/production/application/ (1) 

https://node.hanzoMollusc.com/Messaging/Receiver (2)

Meu comando grep é esse para (2) que está funcionando bem.

/usr/xpg4/bin/grep -E 'node.hanzoMollusc.*Exception' diag* | grep -c 2013-03-28

O problema é se eu quisesse procurar por (1) eu preciso modificar um pouco o comando grep e usar -F onde está indicado no manual

"Matches using fixed strings. Treats  each pattern  specified as a string instead of a regular expression"

Isto é o que eu tenho feito até agora ... o que não está funcionando ....

/usr/xpg4/bin/grep -F 'https://node.hanzo.com/application/*Exception' diag* | grep -c 2013-03-28

Meu problema está na parte do domínio que é node.hanzo e node.hanzoMollusc é por isso que eu não usei -E on (1). Alguém pode me ajudar a consertar isso.

Editar

Eu consegui o que quero exatamente com alguns ajustes do exemplo de Gilles. Na verdade ele estava certo, tentei ler a minha pergunta e não ficou claro. Meu problema ferve é isso.

Eu tenho um problema ao filtrar isso

https://node.hanzoMollusc.com/Messaging/Receiver

toda vez que eu uso este comando:

/usr/xpg4/bin/grep -E 'node.hanzoMollusc.*Exception' diag* | grep 2013-03-28

porque também mostra node.hanzo e node.hanzoMollusc nos resultados.

Eu alterei o exemplo de Gilles e consegui acertar o resultado

/usr/xpg4/bin/grep -E '(https://node.hanzo.com/production/application)[/ ].*Exception' diag*

Muito obrigado Gilles.

    
por dimas 28.03.2013 / 01:29

1 resposta

2

Não está claro o que você quer combinar: seus exemplos são contraditórios.

grep -F corresponde a uma string exata. Se você colocar um * no argumento, ele corresponderá apenas a um caractere * no arquivo.

Se você quiser permitir a correspondência de várias sequências, use -E e o operador | . Por exemplo, o comando a seguir corresponde a linhas contendo https://node.hanzo.com/production/application/somepath Exception Foo ou https://node.hanzoMollusc.com/Messaging/Receiver/somepath Exception Foo (onde a /somepath part é variável e pode ser omitida).

grep -E '(https://node.hanzo.com/production/application|node.hanzoMollusc.com/Messaging/Receiver)[/ ].*Exception' diag*
    
por 30.03.2013 / 02:14

Tags