access.log에서 찾을 IP 주소가 포함된 파일을 grep에 제공하는 방법

access.log에서 찾을 IP 주소가 포함된 파일을 grep에 제공하는 방법

상태

각 줄에 IP 주소가 있는 파일이 있는데 이 IP를 다음에서 찾을 수 있는지 확인하고 싶습니다.access.log

파일 이름: IP 주소

콘텐츠 예시:

192.168.0.1
192.168.0.2
192.168.1.5
etc etc

이제 IpAddressess 파일에 포함된 IP 주소에 대한 access.log를 스캔하고 싶습니다.

grep이를 달성하기 위해 이 명령을 사용할 수 있습니까 ? 명령 구조는 어떤 모습일까요?

도와주셔서 감사합니다!

답변1

찾고 있는 옵션은 내 Arch Linux 시스템에 다음 -f과 같이 설명되어 있습니다.man grep

   -f FILE, --file=FILE
          Obtain patterns from FILE, one per line.   If  this  option  is
          used  multiple  times  or  is  combined  with the -e (--regexp)
          option, search for all patterns given.  The empty file contains
          zero patterns, and therefore matches nothing.

그러나 grep정규식을 사용하고 정규식에서는 "모든 문자"를 의미하므로 해당 옵션 .도 필요하므로 다음 과 일치하지 않습니다 .-F1.2.310293

   -F, --fixed-strings
          Interpret PATTERNS as fixed strings, not regular expressions.

두 가지를 합치면 찾고 있는 명령은 다음과 같습니다.

grep -Ff IpAddressess access.log

답변2

예, 를 사용하세요 . 패턴의 문자가 "모든" 문자로 해석되지 않는다는 점을 grep -f추가하는 것이 좋습니다 .-F.

-f그리고 -F다음과 같이 설명했다

$ grep --help 2>&1|grep -i '^  \-f'
  -F, --fixed-strings       PATTERNS are strings
  -f, --file=FILE           take PATTERNS from FILE
$

예:

$ cat patterns
192.168.0.1
192.168.0.2
192.168.1.5
$ cat myaccesslog
hello 192.168.0.1
world ! 192.168.0.2
foobar 192.168.0x1
$ grep -f patterns myaccesslog
hello 192.168.0.1
world ! 192.168.0.2
foobar 192.168.0x1
$ grep -Ff patterns myaccesslog
hello 192.168.0.1
world ! 192.168.0.2
$

관련 정보