ログファイルがいくつかあります。ユーザー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
ユーザーIDリストからカンマを削除します。 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