grep이 목록 오버 루프에서 작동하지 않습니다.

grep이 목록 오버 루프에서 작동하지 않습니다.

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

관련 정보