grep + expressão regular para coincidir com a palavra localizada antes da última palavra

0

Eu quero capturar todas as linhas que tenham a palavra (XXXX) antes da última palavra

enquanto xxxxx - é o número

 /opt/OV/bin/opcagt -status
 scopeux     Perf Agent data collector                        (5102)   Running
 midaemon    Measurement Interface daemon                     (5110)   Running
 ttd         ARM registration daemon                                   Running
 perfalarm   Alarm generator                                  (5111)   Running
 agtrep      OV Discovery Agent                  AGENT,AgtRep (5520)   Running
 coda        OV Performance Core                 COREXT       (5529)   Running
 opcacta     OVO Action Agent                    AGENT,EA     (5427)   Running
 opcle       OVO Logfile Encapsulator            AGENT,EA     (5443)   Running
 opcmona     OVO Monitor Agent                   AGENT,EA              Running
 opcmsga     OVO Message Agent                   AGENT,EA     (5435)   Running
 opcmsgi     OVO Message Interceptor             AGENT,EA     (5553)   Running
 ovbbccb     OV Communication Broker             CORE         (5352)   Running
 ovcd        OV Control                          CORE         (5344)   Running
 ovconfd     OV Config and Deploy                COREXT       (5383)   Running

Eu tento com

/opt/OV/bin/opcagt -status | grep [0-9]

mas esta sintaxe do grep não captura a palavra antes da última palavra

resultados esperados:

scopeux     Perf Agent data collector                        (5102)   Running
midaemon    Measurement Interface daemon                     (5110)   Running
perfalarm   Alarm generator                                  (5111)   Running
agtrep      OV Discovery Agent                  AGENT,AgtRep (5520)   Running
coda        OV Performance Core                 COREXT       (5529)   Running
opcacta     OVO Action Agent                    AGENT,EA     (5427)   Running
opcle       OVO Logfile Encapsulator            AGENT,EA     (5443)   Running
opcmsga     OVO Message Agent                   AGENT,EA     (5435)   Running
opcmsgi     OVO Message Interceptor             AGENT,EA     (5553)   Running
ovbbccb     OV Communication Broker             CORE         (5352)   Running
ovcd        OV Control                          CORE         (5344)   Running
ovconfd     OV Config and Deploy                COREXT       (5383)   Running
    
por yael 19.09.2016 / 12:20

3 respostas

0

tente

/opt/OV/bin/opcagt -status |  awk 'NF>2 && $(NF-1) ~ /\([0-9]*\)/ '

onde

  • $(NF-1) corresponde antes do último campo
  • ~ pede ao awk para fazer um padrão correspondente
  • /\([0-0]*\)/ padrão é ( , qualquer número de dígitos e ) (você pode usar [0-9] [0-9] * para ter pelo menos um.
  • a ação padrão é imprimir.
por 19.09.2016 / 12:53
2

Para procurar por linhas que contenham o padrão (4-digits)<spaces>word no final da linha

grep -E '\([0-9]{4}\)\s*\w+$'
    
por 19.09.2016 / 12:50
0

Você pode fazer:

... | grep -E '[[:blank:]]\([0-9]{4}\)[[:blank:]]+[^[[:blank:]]+$'
  • [[:blank:]]\([0-9]{4}\) corresponde a um espaço em branco, seguido por 4 dígitos

  • [[:blank:]]+[^[[:blank:]]+$ corresponde a um ou mais espaços em branco seguidos por um ou mais caracteres não brancos, no final.

Exemplo:

$ cat file.txt
scopeux     Perf Agent data collector                        (5102)   Running
 midaemon    Measurement Interface daemon                     (5110)   Running
 ttd         ARM registration daemon                                   Running
 perfalarm   Alarm generator                                  (5111)   Running
 agtrep      OV Discovery Agent                  AGENT,AgtRep (5520)   Running
 coda        OV Performance Core                 COREXT       (5529)   Running
 opcacta     OVO Action Agent                    AGENT,EA     (5427)   Running
 opcle       OVO Logfile Encapsulator            AGENT,EA     (5443)   Running
 opcmona     OVO Monitor Agent                   AGENT,EA              Running
 opcmsga     OVO Message Agent                   AGENT,EA     (5435)   Running
 opcmsgi     OVO Message Interceptor             AGENT,EA     (5553)   Running
 ovbbccb     OV Communication Broker             CORE         (5352)   Running
 ovcd        OV Control                          CORE         (5344)   Running
 ovconfd     OV Config and Deploy                COREXT       (5383)   Running

$ grep -E '[[:blank:]]\([0-9]{4}\)[[:blank:]]+[^[[:blank:]]+$' file.txt
scopeux     Perf Agent data collector                        (5102)   Running
 midaemon    Measurement Interface daemon                     (5110)   Running
 perfalarm   Alarm generator                                  (5111)   Running
 agtrep      OV Discovery Agent                  AGENT,AgtRep (5520)   Running
 coda        OV Performance Core                 COREXT       (5529)   Running
 opcacta     OVO Action Agent                    AGENT,EA     (5427)   Running
 opcle       OVO Logfile Encapsulator            AGENT,EA     (5443)   Running
 opcmsga     OVO Message Agent                   AGENT,EA     (5435)   Running
 opcmsgi     OVO Message Interceptor             AGENT,EA     (5553)   Running
 ovbbccb     OV Communication Broker             CORE         (5352)   Running
 ovcd        OV Control                          CORE         (5344)   Running
 ovconfd     OV Config and Deploy                COREXT       (5383)   Running
    
por 19.09.2016 / 12:55