example: sed: -n option
Nginx의 액세스 로그를 예로 들어 sed
명령어의 사용법을 살펴보는 문서임.
예제 Nginx 액세스 로그
- 다음은 Nginx 액세스 로그의 간단한 예제임.
- 각 라인은 웹 서버에 대한 하나의 HTTP 요청을 나타냄.:
192.168.1.1 - - [10/Oct/2023:13:55:12 +0000] "GET /index.html HTTP/1.1" 200 612 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
192.168.1.2 - - [10/Oct/2023:13:55:15 +0000] "POST /form_submit.php HTTP/1.1" 200 150 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"
192.168.1.3 - - [10/Oct/2023:13:55:17 +0000] "GET /images/logo.png HTTP/1.1" 404 209 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1"
192.168.1.1 - - [10/Oct/2023:13:55:19 +0000] "GET /index.html HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.23 Mobile Safari/537.36"
사용 예: sed
로 특정 상태 코드의 요청 찾기
404 상태 코드를 가진 요청만 출력하기:
sed -n '/HTTP\/1.1" 404 /p' nginx_access.log
- 이 명령은
nginx_access.log
파일에서 HTTP 상태 코드가 404인 모든 요청을 찾아서 출력. - 위의 예제 파일 기준으로는는 세 번째 라인만 해당.
사용 예: 특정 IP 주소의 요청 추출하기
192.168.1.1 주소에서 온 요청만 출력하기:
sed -n '/192.168.1.1/p' nginx_access.log
- 이 명령은
nginx_access.log
에서 IP 주소가192.168.1.1
인 요청 라인만을 출력. - 위의 예제 파일 기준으로는 첫 번째와 네 번째 라인이 출력됨.
사용 예: 요청 경로 변경하기
이미지 파일 요청 경로에서 "/images/"를 "/img/"로 변경하고 결과 출력하기:
sed -n 's|/images/|/img/|p' nginx_access.log
- 이 명령은 요청된 이미지 파일 경로를 변경하고 해당 변경이 있는 라인만을 출력함.
- 이 경우 세 번째 라인에서 변경이 일어남.
- 주의할 것은 substitution에 사용된 패턴에
/
가 들어가기 때문에 각 패턴을 구분하는 구분자로 vertical bar|
를 사용함.
'Linux' 카테고리의 다른 글
[linux] example: sed: -f option (0) | 2024.05.11 |
---|---|
[linux] example: sed: -e option (0) | 2024.05.11 |
[linux] sed (stream editor) 사용법 (0) | 2024.05.11 |
[Linux] sed vs. ed vs. vi : 텍스트 편집 도구 비교 (0) | 2024.05.11 |
[linux] Gateway ip address 확인: Ubuntu (1) | 2024.02.06 |