grep 无法在列表的 for 循环中工作

grep 无法在列表的 for 循环中工作

我有一些日志文件。我有一个用户 ID 列表。我的日志文件采用特定格式

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

我正在尝试搜索日志文件中的每个用户ID。这就是我正在做的事情 -

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

理想情况下,它应该搜索文件中的每个用户 ID 并打印最后一个匹配项。然后我将搜索log-2014-09-29剩余的用户 ID 等等。

但它只打印最后一个用户 ID 的匹配项。

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

我究竟做错了什么?请帮帮我。

答案1

去掉 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

相关内容