Obtém resultados do grep na ordem em que aparecem?

1

Estou tentando fazer um arquivo de log mostrar apenas as linhas que correspondem a um determinado ID de sessão. Até agora, funciona muito bem. No entanto, quando recebo os resultados do meu comando grep, não recebo as entradas na ordem em que aparecem.

Se o arquivo de log no diretório tiver esses dados:

SESSNUM=4437 login.jsp
SESSNUM=4437 welcome.jsp
SESSNUM=4437 info.jsp
SESSNUM=4437 logout.jsp

E eu entro nisso:

grep SESSNUM=4437 * 

Eu recebo esta informação:

SESSNUM=4437 logout.jsp
SESSNUM=4437 welcome.jsp
SESSNUM=4437 login.jsp
SESSNUM=4437 info.jsp

Existe uma maneira de fazer o grep exibir as linhas correspondentes na ordem em que aparecem no (s) arquivo (s) de log?

Obrigado!
Vingador IVR

    
por IVR Avenger 18.09.2009 / 19:32

3 respostas

7
grep SESSNUM=4437 *

O Grep normalmente retorna a coisa em ordem. Tem certeza de que está recebendo os resultados do arquivo de log correto? Funciona corretamente se você especificar o arquivo de log desejado, em vez de apenas *?

Correction! There should only be one file in the directory that contains the session number, but I don't necessarily know which one when I'm grepping.

Sugiro que você use a opção -H do grep, para ter certeza de que está obtendo o conteúdo de apenas um arquivo. Esse deve ser o comportamento padrão, mas o que você postou não incluiu os nomes dos arquivos, a menos que você os tenha removido.

   -H, --with-filename
          Print the file name for each match.  This is  the  default  when
          there is more than one file to search.
    
por 18.09.2009 / 19:37
1

É possível que grep tenha um alias para algo que mexe com o pedido?

No entanto, acho que é mais provável que você tenha vários arquivos no diretório.

    
por 18.09.2009 / 21:06
0

Giz este até o equívoco. Eu estava usando o grep adicional que eu não notei e, combinando tudo em uma única pesquisa, consegui o pedido que estava procurando.

Obrigado pelas sugestões.

    
por 02.10.2009 / 19:54