我有一些日志文件。我有一个用户 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