imhamburger 님의 블로그
리눅스(Linux) - 빔(Vim) 에디터 명령어 grep 실습 - 02 본문
오늘은 데이터 엔지니어 부트캠프 2일차이다. 비전공자라 컴퓨터지식이 없어 그때그때 구글링하며 배우고 있다.
오늘은 1일차에 배웠던 빔 명령어에 관해 간단한 퀴즈를 풀었다.
문제
http 상태 코드는 아래와 같습니다.
https://developer.mozilla.org/ko/docs/Web/HTTP/Status
서버에서 실시간 발생하는 500 로그를 확인하는 방법은 아래와 같습니다.
$ tail -f tmp/ls.log | grep 500
5xx 에 해당하는 모든 로그를 확인하는 grep 구문은 무엇인가요?
내가 이 문제를 처음 풀었던 답은 아래와 같다.
tail -f tmp/ls.log | grep '^5'
*여기서 tail -f 명령어는 실시간으로 내용을 출력하여 파일을 모니터링 할 수 있게 해준다. tail -f {파일명}
처음 이 문제를 받았을 때는 5xx 이니까 맨 앞에 5만 오면 되는거 아닌가? 라고 안일하게 생각했다.
그래서 저런 코드를 적었는데 틀.렸.다!
저렇게 코드를 적게되면,
500
512
5바보
5햄버거맛있다
등등.. 뒤에 무엇이 오든지간에 출력된다..
tail -f tmp/ls.log | grep '5..'
이 코드도 마찬가지인 이유로 틀렸다.
여기서 아차! 깨달은 건... 데이터는 정말 세세하게 정밀하게 작업해줘야 정확하게 뽑아낼 수 있다는 것!
정답은 여러가지가 될 수 있다. 여러가지 중 예시는 아래와 같다.
tail -f tmp/ls.log | grep -E '^5(0|1)[0-9]$'
tail -f tmp/ls.log | grep '5[0-9][0-9]'
이렇게 작성하면 5xx 인 것만 출력이 된다.
첫번째에서 -E는 정규표현식 확장형으로 저것을 적어주지 않으면 해당코드는 실행이 되지 않는다.
'^5(0|1)[0-9]$' 이걸 말로 풀면,
맨 앞에는 무조건 5로 시작하며 그 다음은 0과 1중 하나만 올 수 있으며 맨 끝은 무조건 0-9 사이의 숫자만 올 수 있다. 라는 뜻이다.
오늘의 교훈: 앞으로 코드를 짤 때에는 예외의 경우도 잘 생각해야겠다.
*끄적끄적
echo "메세지입력" > {파일명} #해당 파일에 문자열 입력, 해당 파일이 이미 있는 경우는 기존 내용을 덮어쓴다.
echo "메세지입력" >> {파일명} #해당 파일에 문자열 입력, 해당 파일이 이미 있는 경우는 기존 내용에 이어쓴다.
ls -l > {파일명} #ls -l 내용을 파일에 복사 입력한다.
mkdir -p a/b/c #mkdir 폴더를 만들어주는데 하나씩 만들어야 하지만 mkdir -p 를 붙이면 한꺼번에 만들 수 있다.
'리눅스(Linux)' 카테고리의 다른 글
리눅스(Linux) - 특정 파일 내용을 여러 파일에 복사하기, 파일명이 -l 파일 삭제하기 (2) | 2024.07.22 |
---|---|
리눅스(Linux) - 맥 Vim autoindention 추가하기 (0) | 2024.07.20 |
리눅스(Linux) - nohup과 '&' 개념과 사용법 (0) | 2024.07.17 |
리눅스(Linux) - 쉘스크립트로 코드 작성하기 (0) | 2024.07.13 |
리눅스(Linux) - 빔(Vim) 에디터 명령어 배우기 - 01 (0) | 2024.07.08 |