본문 바로가기
Linux

[linux] example: sed: -e option

by ds31x 2024. 5. 11.

example: sed: -e option

sed-e 옵션은 여러 가지 편집 명령을 실행할 수 있게 해주는 옵션임.
이는 스크립트를 여러 개 제공하여 복잡한 텍스트 처리를 수행할 때 매우 유용함.


예제: Nginx 액세스 로그 수정

예제 파일 내용 (nginx_access.log):

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"

 

nginx_access.log
0.00MB


여러 편집 명령을 적용하는 예제:

다음 sed 명령은 여러 -e 옵션을 사용하여 두 가지 변환을 실행:

  1. IP 주소 192.168.1.110.0.0.1로 변경.
  2. 상태 코드가 404인 라인에서 "404"를 "Not Found"로 변경.
sed -e 's/192.168.1.1/10.0.0.1/' -e 's/" 404 "/" Not Found "/' nginx_access.log

변환 결과:

10.0.0.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" Not Found 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"
10.0.0.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"

이 예제에서 볼 수 있듯이, -e 옵션을 사용하여 sed 명령은 여러 개의 편집 작업을 동시에 수행할 수 있음.
이런 방식으로 텍스트 파일의 내용을 복잡하게 변환 가능함.