grep não está funcionando em um loop for sobre uma lista

3

Eu tenho alguns arquivos de log. E eu tenho uma lista de ids de usuários. Meus arquivos de log estão em um formato específico

log-yyyy-mm-dd
e.g. log-2014-09-30

Estou tentando pesquisar cada userId no arquivo de log. Isso é o que estou fazendo -

for userid in 234, 283, 893, 982, 323; do cat log-2014-09-30 | grep -a "user deleted "$userid  | tail -1; done

O ideal é pesquisar cada ID de usuário no arquivo e imprimir a última correspondência. Em seguida, pesquisarei em log-2014-09-29 para os IDs de usuário restantes e assim por diante.

Mas é só imprimir a correspondência para o último ID de usuário.

INFO - 2014-09-30 22:49:00 - user deleted 323

O que estou fazendo de errado? por favor me ajude.

    
por Hussain Tamboli 22.10.2014 / 13:23

1 resposta

5

Livre-se das vírgulas na lista de ID do usuário. A maneira de passar uma lista para um loop for é dar a ela valores separados por espaços, não separados por vírgula:

for userid in 234, 283, 893, 982, 323; do echo "$userid";done

imprime

234,
283,
893,
982,
323

Mas

for userid in 234 283 893 982 323; do echo "$userid";done

imprime

234
283
893
982
323

Então, você deve fazer

for userid in 234 283 893 982 323; do 
    grep -a "user deleted $userid" log-2014-09-30  | tail -n 1
done
    
por 22.10.2014 / 13:35