06.OS/Linux
[문자열 검색] 문자열 찾기 방법
basicinfo119
2024. 11. 8. 08:29
728x90
반응형
- 문자열을 찾는 방법에 대해 작성 합니다.
Grep 을 사용한 문자열 찾기
- 아래 테스트 로그를 이용해 문자열을 찾는 방법을 알아본다 .
- test.log 파일 내용
--- 0 Error in 17 cases - ._130_line_3729_case
--- 0 Warning in 18 cases - ._143_line_7455_case
--- 0 Error in 19 cases - ._147_line_7455_case
--- 0 fails in 17 cases - ._130_line_3729_case
--- 0 Warning in 18 cases - ._143_line_7455_case
--- 0 Info in 19 cases - ._147_line_7455_case
--- 0 Info in 19 cases - ._148_line_7455_case
--- 0 Info in 19 cases - ._149_line_7459_case
--- 0 Info in 19 cases - ._150_line_7459_case
--- 0 Info in 19 cases - ._151_line_7459_case
--- 0 Info in 19 cases - ._152_line_7459_case
--- 0 Warning in 18 cases - ._143_line_7455_case
--- 0 Error in 19 cases - ._147_line_7455_case
--- 0 fails in 17 cases - ._130_line_3729_case
--- 0 Warning in 18 cases - ._143_line_7455_case
--- 0 Info in 19 cases - ._147_line_7455_case
--- 0 Info in 19 cases - ._148_line_7455_case
--- 0 Info in 19 cases - ._149_line_7459_case
--- 0 Info in 19 cases - ._150_line_7459_case
--- 0 Info in 19 cases - ._151_line_7459_case
--- 0 Info in 19 cases - ._152_line_7459_case
대소문자 구분없이 문자열 라인 찾기
# test.log 파일 에서 Error 또는 Warning 문자를 포함한 라인을 출력 하는 예제이다.
grep -in -E "Error|Warning" test.log
위 예제에서 사용한 옵션은 아래와 같다.
- -i: 대소문자 구분 없이 검색
- -n: 라인 번호 출력
- -E: 확장된 정규 표현식 사용
- "Error|Warning": Error 또는 Warning 을 의미하는 정규 표현식 (둘 중 하나가 포함된 라인을 찾음)
- test.log: 검색할 파일명
찾은 문자열을 분리해서 특정 숫만 출력 하기
- 정규식 과 sed 사용
grep -o 'line_[0-9]\+_case' test.log | sed 's/[^0-9]*\([0-9]\+\)[^0-9]*/\1/g'
$ grep -o 'line_[0-9]\+_case' test.log | sed 's/[^0-9]*\([0-9]\+\)[^0-9]*/\1/g'
3729
7455
7455
3729
7455
7455
7455
7459
7459
7459
7459
3729
7455
7455
3729
7455
7455
7455
7459
7459
7459
7459
찾은 문자열을 중복 제거하고 정렬 하기
- 정규식 과 sed 사용 + sort (정렬) + uniq(중복 제거)
grep -o 'line_[0-9]\+_case' test.log | sed 's/[^0-9]*\([0-9]\+\)[^0-9]*/\1/g' | sort -n | uniq
$ grep -o 'line_[0-9]\+_case' test.log | sed 's/[^0-9]*\([0-9]\+\)[^0-9]*/\1/g' | sort -n | uniq
3729
7455
7459
3729
7455
7459
Grep 옵션
옵션설명예제
-r | 하위 디렉토리까지 포함하여 검색 (재귀 검색) | grep -r "error" /var/log |
-i | 대소문자 구분 없이 검색 | grep -i "error" logfile.txt |
-H | 검색 결과에 파일명을 출력 | grep -H "error" logfile.txt |
-n | 검색된 문자열의 행 번호를 출력 | grep -n "error" logfile.txt |
-c | 해당 문자열이 포함된 라인의 개수 출력 | grep -c "error" logfile.txt |
-l | 해당 문자열이 포함된 파일의 이름만 출력 | grep -l "error" *.log |
-v | 특정 문자열이 포함되지 않은 라인 출력 (반대 검색) | grep -v "debug" logfile.txt |
-w | 단어 단위로 검색 (부분 일치 방지) | grep -w "error" logfile.txt |
728x90
반응형