본문 바로가기

OS

sed 특정 문자열 포함하는 행 출력 / 행 갯수 출력

반응형
반응형

Intro

로깅 시스템이 잘 구축되어 있어도, 가끔 서버에 직접 들어가 특정 상태 코드의 로그가 어느정도인지 파악할 케이스가 있습니다.
(ex: 4xx, 5xx error 혹은  request_time / upstream_time 이 몇 초 이상인지 확인..)
 
 

sed 특정 문자열 포함하는 행 출력

특정 문자열을 포함하는 행을 출력하는 명령어는 아래와 같다. n 옵션이 특정 문자열을 포함하는 행을 찾는 기능을 담당한다.

sed -n '${포함될 문자열}/p' ${파일명}

 
예를 들어 로그가 행 별로 쌓이고 "requset_time" : "4.08" 과 같이 요청 소요 시간에 대한 필드가 있다고 히자.

"request_time"필드가 4초 대인 값을 가지는 행들을 출력할 경우, 아래와 같이 조회한다.

sed -n '/request_time": "4/p' access.log

/p 는 내용을 출력하는 의미를 가지고 있다.
 
 
추가로, 만약 4초부터 9초대 까지를 모두 포함하는 값을 원한다면 아래와 같이 입력하면 된다.

sed -n '/request_time": "[456789]/p' access.log

(10 넘는 경우는.. 아직 필요하지 않아 따로 찾아보진 않았습니다.)
 

sed 특정 문자열 포함하는 행의 개수 출력

wc 명령어를 함께 사용한다. 여기서 wc는 word count의 약자라고 한다.

sed -n '${포함될 문자열}/p' ${파일명} | wc -l

 

마치며..

이런 명령어들을 깊게 이해하고 외우며 사용해도 너무 좋지만.. 우리에겐 해야될 본 업무가 너무 많다.
그래서.. sed나 wc 같은 명령어는 정말 '도구'라고 생각하고, 구글링 하거나 블로그를 정리하며 그때 그때 찾아보는 것이 효율적이지 않을까🤔 ?  (아님)

앞으로 이런 스낵 컨텐츠도 자주 올릴 예정입니다.. 감사합니다..

반응형

'OS' 카테고리의 다른 글

rsyslog 란?  (0) 2023.01.22