grepcommand) – 리눅스 문자열 검색 리눅스 grep 명령어 사용법. (Linux

  1. grep 명령어.
  2. grep은 입력으로 전송된 파일의 내용에서 특정 문자열을 찾고자 할 때 사용하는 명령어입니다. 리눅스에서 가장 많이 사용되는 명령어 중 하나입니다.
  3. 하지만 grep 명령이 문자열을 찾는 기능을 수행했다고 단순히 문자열이 일치하는지를 검사하는 것은 아닙니다. 문자열이 같은지(equal)만 검사하는 수준을 넘어 더욱 복잡하고 다양한 방법으로 그리고 매우 효율적으로 문자열을 찾는 기능을 제공합니다. 이는 grep가 파일의 문자열을 검색할 때 단순 문자열 매칭이 아닌 정규 표현식(Regular Expression)에 의한 패턴 매칭(Pattern Matching) 방식을 사용하기 때문입니다.1.1 정규 표현식(Regular Expression) 정규 표현식(Regular Expression)이란 특정 규칙을 가진 문자열 집합을 표현하기 위한 형식 언어로, 주로 문자열 패턴 매칭을 검사하거나 문자열을 대체하기 위해 사용됩니다.
  4. 문자열 검색에 정규 표현식을 적용하면 지정된 문자열의 문자가 단순히 “같은지(equal)” 여부가 검사되는 것이 아니라 정규 표현식 규칙에 매칭(Matching)되는지 검사됩니다.
  5. 예를 들어 단순 문자열 검색에서 “*”는 말 그대로 “*”를 의미하기 때문에 (‘*’==’*’)는 성립하지만, (‘A’==’*’)는 성립하지 않습니다. 그러나 정규 표현식에서 “*”는 0이상의 모든 문자를 의미하기 때문에 (‘*’==’*’)뿐만 아니라 (‘A’==’*’)도 TRUE로 판단됩니다.
  6. 정규 표현식을 모두 설명하기에는 지면이 많이 부족하기 때문에 여기서는 정규 표현식을 작성할 때 사용되는 메타 문자(Meta Character)에 대해서만 간단히 정리하겠습니다.
  7. 메타 문자 (MetaCharacter) 설명 1개의 문자 매치 (정확하게 1개의 문자와 매치) *앞문자가 0회 이상 매치 {n}앞문자가 정확하게 n회 매치 {n,m} 앞문자가 n회 이상 m회 이하 매치 [ ]대괄호에 포함된 문자 중 하나와 성냥[^]대괄호 내 문자 제외 [-] 대괄호 내 문자 범위에 있는 문자 매치 () 표현식을 그룹화^ 문자열 라인의 첫 번째 $문자 열 라인의 마지막? 앞 문자가 0 또는 1회 매치 (확장 정규 표현식) + 앞 문자가 1회 이상 매치 (확장 정규 표현식) | 표현식 논리 OR (확장 정규 표현식) 2. grep 명령 옵션.grep명령에서 사용할 수 있는 옵션은 다음과 같습니다.(grep명령에 대한 보다 자세한 옵션은 “grep–help”명령을 통해 확인할 수 있습니다.)
  8. grep [OPTION…] PATTERN [FILE…] – E:PATTERN을 확장 정규 표현(Extended RegEx)으로 해석. – F:PATTERN을 정규 표현(RegEx)이 아닌 일반 문자열로 해석. – G:PATTERN을 기본 정규 표현(Basic RegEx)으로 해석. – P:PATTERN을 Perl 정규 표현(Perl RegEx)으로 해석.- e: 매칭을 위한 PATTERN 커뮤니케이션 – f: 파일에 기록된 내용을 PATTERN에서 사용.- i: 대/소문자 무시.- v: 매칭되는 PATTERN이 존재하지 않는 라인 선택. – w: 단어(word) 단위로 매칭.-x: 라인(line) 단위로 매칭.- z : 라인을 newline (
  9. )가 아닌 NULL(-b: 패턴이 매치된 각 라인(-o를 사용하는 경우 문자열)의 바이트 오프셋 출력.- n : 검색결과 출력라인 앞에 라인번호 출력.- H : 검색결과 출력라인 앞에 파일명 표시. -h : 검색결과 출력시 파일명 무시.-o: 매치할 문자열만 표시. -q: 검색 결과 출력하지 말 것.- a: 이진 파일을 텍스트 파일처럼 처리. – I: 이진 파일은 검사하지 말 것.- d: 디렉토리 처리 방식 지정. (read, recurse, skip)-D: 스페셜 파일 처리 방식 지정. (read, skip) – r: 하위 디렉토리 탐색. – R: 심벌리클링크로 인해 모든 하위 디렉토리 탐색. – L:PATTERN이 존재하지 않는 파일 이름만 표시. – l: 패턴이 존재하는 파일 이름만 표시. – c: 파일, 당 패턴이 일치하는 라인의 개수 출력. 3. grep 명령 사용의 예.grep을 사용하여 파일에서 문자열을 검색하는 방법은 아래와 같습니다.
  10. $ grep [OPTION] [PATTERN] [FILE]
  11. 아래는 “FILE.txt”의 내용으로 “PAT”라는 문자열을 검색하고, 문자열이 존재하는 라인을 출력의 예입니다. 기본적으로 대 소문자를 구분한다는 점에 주의하세요.
  12. $cat FILE.txtgrep searches for PATTERNS in each FILE.PATTERNS is one or patterns separated by newline characters.And grep prints each line that matches a pattern.$grep”PAT”FILE.txtgrep searches for PATTERNS in each FILE.PATTERNS is one or patterns separated by newline characters. 잘 쓴 grep명령어 사용의 예는 아래와 같습니다. 각 항목의 링크를 선택하면 좀 더 자세한 설명과 사용의 예를 확인할 수 있습니다.
  13. grep사용 예 명령어 옵션 대상 파일로 문자열 검색 grep”STR”[FILE]현재 디렉토리 모든 파일로 문자열 검색 grep”STR”*특정 확장자를 가진 모든 파일로 문자열 검색 grep”STR”*. ext대 소문자를 구분하지 않고 문자열 검색 grep-i”STR”[FILE]매칭 되는 PATTERN이 존재하지 않는 라인 선택 grep-v”STR”[FILE]단어(Word)단위로 문자열 검색 grep-w”STR”[FILE][FILE][FILE][FILE]100″STR”FILE검색 결과 앞에 파일 이름 표시 grep-H”STR”*문자열 A에서 시작하는 문자열 B에서 끝난 패턴 찾아 grep”A.*B”*0-9사이의 숫자만 변경되는 패턴 찾아 grep”STR[0-9]*문자열 패턴전체를 정규 표현식 메타 문자가 아닌 일반 문자로 검색한 grep-F”*[][FILE]정규 표현식 메타 문자를 일반 문자로 검색한 grep”*”[FILE]문자열 라인 최초의 패턴 검색한 grep”STR”FILE]grep명령에 문자열과 파일 이름을 지정하고, 파일에서 문자열을 검색할 수 있습니다. 이때 문자열 검색 결과는 문자열이 포함된 라인 단위로 출력됩니다.$grep”STR”FILE1.txt>FILE.txt에서 “STR”문자열 검색.$$cat FILE1.txtgrep searches for PATTERNS in each FILE.PATTERNS is one or patterns separated by newline characters.And grep prints each line that matches a pattern.
  14. $$grep”PAT”FILE.txtgrep searches for PATTERNS in each FILE.PATTERNSisoneorpatternsseparatedbynewlinecharacters.3.2현재 디렉토리 모든 파일에서 문자열 검색 파일 이름에 “*”문자를 사용하여 현재 디렉토리에 있는 모든 파일에서 문자열을 검색할 수 있습니다. 단, 현재 디렉토리에 포함되는 하위 디렉토리에 있는 파일은 탐색하지 않습니다.(하위 디렉토리를 탐색하려면-r옵션 사용.)$grep”STR”*>현재 디렉토리 모든 파일에서 “STR”문자열 검색.$lsFILE1.txtFILE2.txt
  15. $$grep”PAT”*FILE1.txt:grep searches for PATTERNS in each FILE.FILE1.txt:PATTERNS is one or patterns separated by newline characters.FILE2.txt:grepsearchesforPATTERNSineachFILE.FILE2.txt:PATTERNSisoneorpatternsseparatedbynewlinecharacters.3.3특정 확장자를 가진 모든 파일에서 문자열 검색 파일 이름 확장자 앞에 “*”문자를 사용하여 특정 확장자를 가진 모든 파일에서 문자열을 검색할 수 있습니다.$grep”STR”*. ext>ext확장자를 가진 파일에서 “STR”문자열 검색.$lsA.cA.hB.cB.h$grep”include”*. hA.h:#include<stdio.h>B.h:#include<string.h”3.4 큰 문자열 검색 grep명령에 “-i”옵션을 사용되어 큰 문자열을 검색할 수 있습니다.grep-i”STR”FILE.txt>FILE.txt파일에서 대 소문자를 구분 없이(STR, str)문자열 검색.$$cat FILE1.txtgrep searches for PATTERNS in each FILE.PATTERNS is one or patterns separated by newline characters.And grep prints each line that matches a pattern.
  16. $$grep-i”Pat”FILE1.txtgrep searches for PATTERNS in each FILE.PATTERNSisoneorpatternsseparatedbynewlinecharacters.Andgrepprintseachlinethatmatchesapattern.3.5매칭 되는 PATTERN이 존재하지 않는 라인 선택일 경우에는 문자열이 매
error: Content is protected !!