로그 파일이 몇 개 있습니다. 사용자 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