Hus*_*oli 6 grep shell-script tail cat
我有一些日志文件。我有一个用户 ID 列表。我的日志文件采用特定格式
log-yyyy-mm-dd
e.g. log-2014-09-30
Run Code Online (Sandbox Code Playgroud)
我正在尝试在日志文件中搜索每个用户 ID。这就是我正在做的 -
for userid in 234, 283, 893, 982, 323; do cat log-2014-09-30 | grep -a "user deleted "$userid | tail -1; done
Run Code Online (Sandbox Code Playgroud)
理想情况下,它应该搜索文件中的每个用户 ID 并打印最后一个匹配项。然后我将搜索log-2014-09-29剩余的用户 ID 等等。
但它只打印最后一个用户 ID 的匹配项。
INFO - 2014-09-30 22:49:00 - user deleted 323
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?请帮帮我。
去掉 userid 列表中的逗号。将列表传递给 for 循环的方法是给它空格分隔的值,而不是逗号分隔:
for userid in 234, 283, 893, 982, 323; do echo "$userid";done
Run Code Online (Sandbox Code Playgroud)
印刷
234,
283,
893,
982,
323
Run Code Online (Sandbox Code Playgroud)
但
for userid in 234 283 893 982 323; do echo "$userid";done
Run Code Online (Sandbox Code Playgroud)
印刷
234
283
893
982
323
Run Code Online (Sandbox Code Playgroud)
所以,你应该做
for userid in 234 283 893 982 323; do
grep -a "user deleted $userid" log-2014-09-30 | tail -n 1
done
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4914 次 |
| 最近记录: |