grep не работает в цикле for по списку

У меня есть некоторые файлы журналов. И у меня есть список идентификаторов пользователей. Мои файлы журналов находятся в определенном формате

log-yyyy-mm-dd eg log-2014-09-30 

Я пытаюсь выполнить поиск каждого пользователя в файле журнала. Это то, что я делаю –

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

В идеале он должен искать каждый идентификатор пользователя в файле и печатать последнее совпадение. Затем я буду искать в log-2014-09-29 для остальных идентификаторов пользователей и так далее.

Но это только печать соответствия для последнего идентификатора пользователя.

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

Что я делаю не так? пожалуйста, помогите мне.

One Solution collect form web for “grep не работает в цикле for по списку”

Избавьтесь от запятых в списке userid. Способ передачи списка в цикл for состоит в том, чтобы дать ему пространственные разделенные значения, а не разделенные запятой:

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

печать

 234, 283, 893, 982, 323 

Но

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

печать

 234 283 893 982 323 

Итак, вы должны сделать

 for userid in 234 283 893 982 323; do grep -a "user deleted $userid" log-2014-09-30 | tail -n 1 done 
  • Почему комбинация tail + grep + cut не работает?
  • Как преобразовать часовой пояс в журналы, поскольку они хвостают
  • Команда для удаления первого N числа строк на входе
  • После виртуального файла?
  • $ (tail) в переменную удаления \ n
  • Можно ли изменить количество строк по умолчанию хвоста?
  • Найдите кучу gps-файлов в папке для окончательного расстояния, выведите список расстояний
  • Как изменить цвет символа при хвосте и tr
  • Как следить и искать в файле, проходящем через фильтр, менее
  • разделение CSV и сохранение заголовка без промежуточных файлов
  • Греп от конца файла до начала
  • Linux и Unix - лучшая ОС в мире.