상태
각 줄에 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
정규식을 사용하고 정규식에서는 "모든 문자"를 의미하므로 해당 옵션 .
도 필요하므로 다음 과 일치하지 않습니다 .-F
1.2.3
10293
-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
$