
이메일이 포함된 텍스트 파일이 하나 있다고 가정해 보겠습니다.
abd3@dom
abd2@dom
sdklf2@lksd
sd@gm
파일에 이메일이 포함되어 있는지 찾고 일치하는 파일을 인쇄하려면 grep, find에 대한 작은 bash 스크립트가 필요합니다.
그럴 것이라고 예상한다
**this email abd3@dom found in file8560.txt**
**this email abd2@dom found in file750.txt**
**this email sdklf2@lksd found in file970.txt**
**this email sd@gm found in file2690.txt**
답변1
이메일 주소를 검색할 파일 목록을 알고 있는 경우 다음을 수행할 수 있습니다.
grep -F -H -w -o -f email_list_file list of files to search | awk -F: '{print "*** this email " $2 " found in " $1 "**}'
'-w' 플래그는줄이다하지만 Ed가 댓글에서 지적한 오탐지 중 일부를 제거할 수는 없습니다. 인쇄하려면 '-o' 플래그가 필요합니다.오직이메일 주소가 포함된 전체 줄이 아니라 이메일 주소입니다.
답변2
grep -Fxf list_of_emails.txt files...
find ... -type f -exec grep -Fxf list_of_emails.txt /dev/null {} +
...
명령 의 를 find
파일 및 디렉터리 목록과 다른 조건자로 바꿉니다 find
.
이는 단일 파일로 호출할 때 grep이 수행하지 않는 결과 앞에 항상 파일 이름을 붙이도록 /dev/null
강제하는 것입니다 . grep
이는 -H
이식성이 없는 GNU grep 옵션을 에뮬레이트합니다.