Grep várias linhas com padrões diferentes [fechado]

1

Eu tenho este arquivo test.debug no Unix do AIX com os seguintes campos:

in[  2: ]<0000********0000>  
in[  3: ]<0>  
in[  4: ]<000000020000>  
in[  7: ]<1113>  
in[  7: ]<80402>  
in[ 11: ]<5530>  
in[ 12: ]<181113>  
in[ 12: ]<90254>  
in[ 17: ]<1113>  
in[ 19: ]<960>  
in[ 22: ]<510101510000>  
in[ 24: ]<400>  
in[ 25: ]<4021>  
in[ 26: ]<7011>  
in[ 28: ]<181115>  
in[ 30: ]<000000020000>  
in[ 32: ]<000090>  
in[ 33: ]<589638>  
in[ 37: ]<000000000132>  
in[ 41: ]<75000001>  
in[ 42: ]<01111111111    >  
in[ 49: ]<960>
in[ 56: ]<110000553018111309025406000004>  
in[128: ]<98D6F81BFFFFFFFF>

out[000: ]<ISO9090-9999999902299>

in[129: ]<9420>

Eu quero criar um script que possa selecionar o seguinte: in[ 32: ]<000090> , in[ 49: ]<960> , out[000: ]<ISO9090-9999999902299> e in[129: ]<9420> e ecoá-los.

O diretório dos logs é /var/debug/logs .

    
por developer_ 15.11.2018 / 08:18

2 respostas

0

Você pode colocar todos os padrões que deseja procurar em um arquivo e especificar o arquivo na linha de comando usando o sinalizador -f.

Citando a página man:

-f file, --file=file
            Read one or more newline separated patterns from file.  Empty pattern lines match every input line.
            Newlines are not considered part of a pattern.  If file is empty, nothing is matched.

então

grep -r -f <your file> /var/debug/logs

dará a você todas as linhas correspondentes a qualquer uma das linhas de todos os arquivos em /var/debug/logs

    
por 15.11.2018 / 09:28
0

Você pode apenas grep para cada um dos códigos de erro que deseja corresponder. Não é necessário usar echo , pois grep já exibe as linhas correspondentes.

grep -E '000090|960|9420|out\[ *002: *\]<ISO9090-9999999902299>' /var/debug/logs/filename

Você pode usar * como nome do arquivo se quiser pesquisar todos os arquivos da pasta em vez de apenas um.

    
por 15.11.2018 / 09:22