
애플리케이션의 로그 파일이 있는데 성공적으로 로그인하지 못한 사용자만 필터링해야 합니다. (사용자 ID 이후에는 등록이 가능합니다.)
로그 파일에는 다음 항목이 있습니다.
user2
user5
user7
user1
user1
user1 ok
user8
user9
user3
user3 ok
예상되는 출력은 다음과 같아야 합니다.
user2
user5
user7
user8
user9
제 생각에는:
sed "/user/N;/ok/d"
결과가 없다. 계속 "사용자 1"이 표시됩니다.
user2
user5
user7
user1
user8
user9
답변1
귀하의 질문을 잘못된 방식으로 이해하지 않는 한 이것은 작동합니다.
$ grep -v -f <(grep " ok$" aa.txt |cut -d' ' -f1) aa.txt
user2
user5
user7
user8
user9
효과적으로 파일에서 "정상"으로 표시된 모든 이름을 찾은 다음 이러한 이름을 패턴으로 사용하여 동일한 파일에서 제외하여 "비정상" 로그인을 얻습니다.
이는 user1이 결국 성공적으로 로그인했기 때문에(3번의 시도 후에도) user1은 실패로 간주되지 않으므로 모든 user1 시도가 제외된다는 사실을 기반으로 합니다.
grep -v: 패턴 제외
grep -f: 파일에서 패턴 로드, 성공적인 로그인을 저장하는 프로세스 교체는 다음과 같습니다.
PS1: aa.txt 파일은 제가 귀하의 데이터를 붙여넣은 로컬 파일 중 하나입니다.
업데이트: ok 앞에 공백을
사용하면 <(grep " ok$" aa.txt |cut ...)
로그인에 실패했지만 이름에 "ok"가 포함된 사용자 이름은 일치하지 않습니다(예: Bangok 사용자).