안녕하세요. 주식회사 서버몬 입니다.
오늘은 리눅스 시스템에서 텍스트 검색과 패턴 매칭을 위해 자주 사용되는 grep 명령어에 대해 알아보겠습니다.
grep은 강력한 검색 도구로, 파일 내용이나 명령어 출력 결과에서 원하는 패턴을 찾을 수 있습니다.
본 글에서는 Rocky Linux 8.7 환경에서 grep의 기본적인 정보와 단독으로 활용하는 방법,
다른 명령어와 함께 활용 방법 등을 확인해보겠습니다.
grep이란?
grep은 Global Regular Expression Print의 약자로 1973년에 UNIX 운영 체제에서 개발되었습니다.
Ken Thompson이 개발한 ed(편집기)의 정규 표현식 검색 기능을 기반으로 만들어졌습니다.
[주요 사용 가능한 OS 환경]
- UNIX 및 UNIX 계열: Linux, macOS (이전 버전은 BSD 기반), FreeBSD, OpenBSD, Solaris 등
- Windows: GNU grep이나 유사한 도구를 설치하여 사용할 수 있습니다.
예를 들면 Grep for Windows, Cygwin, Git Bash 등이 있습니다.
- 다른 운영 체제: AIX, HP-UX, IBM i (formerly AS/400), z/OS 등 UNIX 기반 운영 체제에서도 사용 가능합니다.
(특정 운영 체제에서 제공되는 grep의 버전 및 기능은 운영 체제 버전 및 배포판에 따라 다를 수 있습니다.
따라서 특정 환경에서 사용 가능한 grep의 옵션 및 기능을 확인하기 위해 해당 운영 체제의 문서나 공식
사이트를 참고하는 것이 좋습니다.)
grep을 단독으로 활용하기
일반적으로 grep를 처음 접하는 경우는 grep 단독으로 사용하는 경우보다는 하기와 같이 다른 명령과
함께 활용되는 경우가 많습니다.
#ls -l | grep "test"
#ifconfig | grep "inet addr"
#netstat | grep "tcp"
하지만 grep은 단독으로 사용해도 활용도가 많은 명령어 입니다.
1. 기본 사용법
기본 형식: grep [옵션] 패턴 [파일]
주요 옵션:
-i: 대소문자를 구분하지 않고 검색합니다.
-r: 하위 디렉토리까지 재귀적으로 검색합니다.
-v: 패턴과 일치하지 않는 행을 출력합니다.
-n: 행 번호를 함께 출력합니다.
2. 활용 예제
- 파일에서 특정 단어 검색하기
#grep "error" test.txt
- 대소문자 구분 없이 검색하기
#grep -i "error" test.txt
- 여러 파일에서 검색하기
#grep "error" test.txt test2.txt
- 디렉토리 내 모든 파일에서 검색하기
#grep -r "error" directory/
- 패턴과 일치하지 않는 행 출력하기
#grep -v "error" test.txt
- 행 번호와 함께 출력하기
#grep -n "error" test.txt
grep과 다른 명령어를 함께 활용하기
grep 명령어를 파이프(|)와 함께 사용하여 다른 명령어의 출력 결과에서도 검색할 수 있습니다.
단독으로 사용되는 경우보다는 이렇게 사용되는 경우가 더 많습니다.
1. 기본 사용법
기본 형식: 명령어1 [명령어 1의 옵션] | grep [옵션] 패턴
(파이프 "|" 는 왼쪽 명령어의 출력을 오른쪽 명령어의 입력으로 전달하는 명령)
주요 옵션:
-i: 대소문자를 구분하지 않고 검색합니다.
-r: 하위 디렉토리까지 재귀적으로 검색합니다.
-v: 패턴과 일치하지 않는 행을 출력합니다.
-n: 행 번호를 함께 출력합니다.
2. 활용 예제
- ps와 grep을 함께 사용하여 프로세스 검색
#ps aux | grep "httpd"
이 예시에서는 ps aux 명령어로 현재 실행 중인 모든 프로세스를 보여주고, 파이프(|)를 통해 grep 명령어로
"httpd"라는 키워드를 검색합니다. 결과는 "httpd"라는 키워드를 포함하는 프로세스들이 출력됩니다.
- ls와 grep을 함께 사용하여 파일 검색
#ls -l | grep "test3"
이 예시에서는 ls -l 명령어로 현재 디렉토리의 파일 목록을 보여주고, 파이프(|)를 통해 grep 명령어로 "test3"라는
패턴을 검색합니다. 결과는 "test3"라는 패턴을 포함하는 파일들이 출력됩니다.
- ifconfig와 grep을 함께 사용하여 네트워크 인터페이스 정보 검색
#ifconfig | grep "inet"
이 예시에서는 ifconfig 명령어로 시스템의 네트워크 인터페이스 정보를 보여주고, 파이프(|)를 통해 grep 명령어로
"inet"이라는 키워드를 검색합니다. 결과는 "inet"이라는 키워드를 포함하는 네트워크 인터페이스 정보가 출력됩니다.
grep vs find
리눅스에서 많이 사용되는 검색 명령어라면 find를 빼놓을 수 없는데요.
grep과 find는 아래와 같은 차이점이 있습니다.
검색 대상 | 검색 방법 | 사용법 | 활용 예시 | |
grep | 주로 파일 내용을 검색하는 데 사용 |
주어진 텍스트 파일 또는 표준 입력에서 패턴을 검색 |
정규 표현식을 사용하여 유연한 검색이 가능 |
로그 파일에서 특정 에러 메시지를 찾거나 소스 코드 에서 특정 함수를 검색하는 데 유용 |
find | 주로 파일 시스템에서 파일이나 디렉토리를 검색하는 데 사용 |
파일 시스템의 특정 위치부터 디렉토리를 탐색하며 조건에 해당하는 파일을 검색 |
파일 이름, 크기, 소유자 등의 속성을 기준으로 검색이 가능 |
특정 디렉토리에서 특정 파일을 검색하거나 파일 크기에 따라 파일을 필터링하는 데 유용 |
grep과 find는 둘 중 하나를 선택해서 사용하기보다는 함께 사용하면 더 다양한 검색이 가능합니다.
- 특정 디렉토리에서 특정 파일을 검색하고 해당 파일에서 특정 패턴을 찾기
#find ~/test -type f -name "test.txt" -exec grep -H "error" {} +
이 예시에서는 ~/test 경로에서 파일명이 test.txt인 파일을 찾고, 해당 파일에서 "error"라는 키워드를 검색합니다.
(단일 파일일 경우에도 파일명을 표시해주기 위해 -H 옵션을 추가합니다.)
- 특정 디렉토리와 하위 디렉토리에서 특정 확장자를 검색하고 해당 파일들에서 특정 패턴을 찾기
#find ~/test -type f -name "*.txt" -exec grep -H "error" {} +
이 예시에서는 ~/test 경로에서 확장자가 .txt인 파일을 찾고, 해당 파일들에서 "error"라는 키워드를 검색합니다.
- 특정 디렉토리와 하위 디렉토리에서 모든 파일을 검색하고 해당 패턴이 포함된 특정 라인을 출력
#find ~/test -type f -exec grep -H "error" {} +
이 예시에서는 ~/test 디렉토리와 하위 디렉토리에서 파일을 검색하고, 각 파일에서 "error"가 포함된 라인을 출력합니다.
이렇게 grep과 find를 조합하여 다양한 검색 작업을 수행할 수 있으며, 필요에 따라 옵션과 검색 조건을 조정하여
원하는 결과를 얻을 수 있습니다.
마치며
오늘은 grep에 대한 기본 정보와 활용 방안에 대해서 알아보았습니다.
본 글에서 다룬 활용법 이외에도 다양한 방법으로 grep 활용이 가능하오니
여러가지 방법을 통해 리눅스 OS 사용에 도움이 되었으면 합니다.
읽어주신 모든 분들께 감사드리며 항상 좀 더 유용한 주제로 손쉽게 정리된 내용을 보여드릴 수 있도록 노력하겠습니다.
이상 [서버를 위한, 서버에 의한 몬스터!!!] 서버몬이었습니다. 감사합니다.
1u서버 / APC / DB / defog / DEFOG랙 / dell5820 / dell5820t / dell7920 / dellpoweredge / dellr240 / dellr340 / dellr350 / dellr450 / dellr540 / dellr630 / dellr640 / dellr740 / dellr750 / dellserver / dellt40 / dellt440 / dellt5820 / dell서버 / DELL서버CPU / DELL서버RAID컨트롤러 / DELL서버SAS하드디스크 / DELL서버가격비교 / DELL서버가격비교견적 / DELL서버견적 / DELL서버구매 / DELL서버디스크교체 / DELL서버메모리 / DELL서버펌웨어 / DELL서버하드디스크구매 / dell워크스테이션 / dl20 / dl20gen10 / dl360 / dl360gen10 / dl380 / dl380g10 / dl380gen10 / ECC메모리 / EDFOG랙가격 / ESTSOFT / FIRMWARE / gpu서버 / gpu타워형서버 / HA솔루션 / hpdl20 / hpdl360 / hpdl360gen10 / hpdl380 / hpdl380g10 / HPE / HPE Service Pack for Proliant / HPE SPP / hpedl20 / hpedl20gen10 / hpedl360gen10 / hpe서버 / HPE서버CPU / HPE서버RAID컨트롤러 / HPE서버SAS하드디스크 / HPE서버가격비교 / HPE서버가격비교견적 / HPE서버견적 / HPE서버구매 / HPE서버드라이버설치 / HPE서버디스크교체 / HPE서버메모리 / HPE서버비용 / HPE서버펌웨어 / HPE서버하드디스크구매 / hpgen10 / hpml30 / hpserver / hpz2 / hpz4 / hpz420 / hpz440 / hpz4g4 / hpz640 / hpz6g4 / hpz8g4 / hp마이크로서버 / hp서버 / hp서버800 / hp서버800w / hp서버cto / hp서버pc / HP서버메모리 / hp서버컴퓨터 / HP서버펌웨어 / HP서버하드디스크 / hp워크스테이션 / hp프로라이언트 / HYPER BACKUP / ibm서버 / Intelligent Provisioning / KVM / KVM 기술지원비(비용) / KVM 설치비 / L2스위치 / L3스위치 / LENONO서버SAS하드디스크 / lenovop620 / lenovor650 / LENOVO서버 / LENOVO서버CPU / LENOVO서버RAID컨트롤러 / LENOVO서버가격비교 / LENOVO서버가격비교견적 / LENOVO서버견적 / LENOVO서버구매 / LENOVO서버디스크교체 / LENOVO서버메모리 / LENOVO서버하드디스크구매 / LENOVO펌웨어업데이트 / Linux / ML30 / ml30gen10 / ML350GEN10 / ML360 / MSSQL / MSSQL 기술지원비(비용) / MSSQL 설치비 / MYSQL / MySQL 기술지원비(비용) / MySQL 설치비 / OS설치 / p17079-b21 / poweredger740 / poweredger750 / precision5820 / QUADRO / QUADRO그래픽카드 / r240 / r340 / r440 / r740 / RHEL설치 / RMS랙 / server / serverpc / SOPHOS / SPP / sr250 / sr650 / SYNOLOGY / SYNOLOGY나스 / UPS / UPS기술지원 / UPS납품 / UPS설치 / V3 / Windows서버설치 / z420 / z620 / z840 / z8g4 / 기술지원비(비용) / 나스기술지원 / 나스설치지원 / 네트워크스위치 / 네트워크장비 / 더블테이크 / 데이터베이스 / 델5820 / 델서버 / 델서버비용 / 델서버펌웨어업데이트 / 델워크스테이션 / 델컴퓨터워크스테이션 / 디포그 / 디포그랙 / 디포그랙가격 / 딥러닝pc / 딥러닝서버 / 랙 / 랙(RACK) 기술지원비(비용) / 랙(RACK) 설치비 / 랙납품설치 / 랙설치 / 레노버p620 / 레노버서버 / 레노버워크스테이션 / 레노보서버 / 레노보서버펌웨어 / 레드헷설치 / 리눅스 기술지원비(비용) / 리눅스 설치비 / 리눅스서버 / 리눅스서버설치 / 리눅스서버트러블슈팅 / 리눅스트러블슈팅 / 리욱스 / 미니서버 / 미니서버랙 / 방화벽 / 방화벽 기술지원비(비용) / 방화벽 설치비 / 방화벽엔지니어 / 백업 / 보안솔루션 / 보안솔루션구매 / 보안솔루션설치 / 서버 / 서버 기술지원비(비용) / 서버 랙마운트비용 / 서버 설치비 / 서버 장애조치비용 / 서버CPU / 서버MEMORY / 서버OS설치 / 서버pc / 서버가격 / 서버구매 / 서버기술지원 / 서버납품 / 서버디스크장애처리 / 서버랙 / 서버렉마운트 / 서버메모리 / 서버몬 / 서버몬기술지원 / 서버백업 / 서버보안 / 서버엔지니어 / 서버용pc / 서버용그래픽카드 / 서버용메모리 / 서버용컴퓨터 / 서버용하드디스크 / 서버컴 / 서버컴퓨터 / 서버트러블슈팅 / 서버호스팅 / 소포스 / 스위치 / 스위치 기술지원비(비용) / 스위치 설치비 / 스토리지 / 스토리지 기술지원비(비용) / 스토리지 랙마운트비용 / 스토리지 설치비 / 스토리지 장애조치비용 / 스토리지납품설치 / 스토리지서버 / 시놀로지DS918 / 시놀로지HyperBackup / 시놀로지나스 / 시놀로지나스백업 / 시놀로지하이퍼백업 / 시큐어디스크 / 안랩 / 알약 / 왼도우서버설치 / 우분투설치 / 워크스테이션 / 워크스테이션pc / 워크스테이션컴퓨터 / 윈도우서버 / 윈도우서버2016 / 윈도우서버2019 / 윈도우서버트러블슈팅 / 윈도우즈 기술지원비(비용) / 윈도우즈 설치비 / 이스트소프트 / 이중화솔루션 / 이중화솔루션구매 / 이중화솔루션설치 / 인터넷디스크 / 작업장컴퓨터 / 제온서버 / 젠서버 / 중고서버 / 중고워크스테이션 / 카보나이트 / 카스퍼스키 / 컴퓨터서버 / 쿼드로P400 / 타워형서버 / 페도라설치 / 프로라이언트 / GPU서버 / 미니서버렉 / 서버용PC / 젠서버 / AI서버 / 제온서버 / 서버가격 / 1U서버 / HPDL20Gen10 / HP서버8SFF800W / 가상서버 / 타워형서버 / HPDL360 / HPDL380Gen10 / 컴퓨터서버 / 미디어서버 / 타워서버 / DB서버 / HP서버580 / HP서버파워 / HPDL360Gen10 / 윈도우서버컴퓨터 / XEON서버 / 881457-B21
'설치 및 기술 자료 > Linux' 카테고리의 다른 글
[Linux] Linux 에서 SSH Public Key 생성하여 원격 서버에 로그인 하기 (0) | 2023.07.20 |
---|---|
[Linux] 앤서블 (Ansible) 시작하기 (0) | 2023.07.18 |
[Linux] CentOS 7, RockyLinux 8 에서 PHP 7, 8 선택하여 설치하기 (0) | 2023.06.05 |
[Linux] 리눅스 방화벽 firewalld의 소개 및 활용 (0) | 2023.05.26 |
[Linux] RockyLinux 에서 삼바(samba) 설치와 설정 및 윈도우 공유 (0) | 2023.05.11 |
댓글