grep – 파일에서 원하는 조건의 라인 찾기

grep 는 특정파일에서 원하는 조건에 해당하는 라인을 찾을때 사용하는 명령어

 

[table caption=”Linux grep Option” colwidth=”100|200″ colalign=”center|center|left”]
option , 풀이 , 설명
-A NUM , –after-context=NUM , 패턴매칭라인 이후의 라인을 NUM수만큼 출력
-a ,  –text , 기본적으로 grep는 바이너리 파일을 처리할 수없다. 그런데 바이너리파일을 텍스트파일처럼 처리할 수있는 옵션이 -a 옵션이다
-B NUM ,  –before-context=NUM , 패턴매칭라인 이전의 내용을 NUM수만큼 출력.
-b ,  –byte-offset , 패턴매칭되기전 라인의 바이트수를 출력
-C NUM  ,  –context=NUM , 출력물 앞뒤 전후의 주어진 라인만큼 출력(패턴매칭 라인은 포함하지 않고 기본 2라인)
-c, –count ,  파일의 내용 대신 문자열이 들어있는 라인의 수를 출력(3개의 라인에서 매칭된다면 3출력)
-E ,  –extended-regexp , 확장 정규표현식으로 패턴을 해석한다(=egrep 같은 의미)
-e PATTERN , –regexp=PATTERN , pattern 에서 찾을 문자열 명시 / 패턴으로 PATTERN을 사용(“-으로 시작하는 패턴”을 보호하는데 유용)
-F ,  –fixed-strings , newline으로 분리된 고정된 문자열의 리스트로써 패턴을 해석한다(=fgrep과 같은 의미)
-f FILE ,  –file=FILE , 파일로부터 패턴을 얻는다(파일의 라인마다). 공백파일은 zero 패턴을 포함한다. 그러므로 매치되는것이 없다.
-G ,  –basic-regexp , 정규표현식으로써 PATTERN을 해석하고 이것이 기본이다
-H ,  –with-filename , 매칭되는 파일명을 출력
-h ,  –no-filename ,여러개의 파일이 검색되었을때 -H 옵션처럼 앞에 파일명을 출력하지 않는다 –help / help 메세지를 출력
-I(대문자 i)  ,  ,  매칭된 데이터를 포함하지 않는것처럼 바이너리 파일을 처리한다. binary-files=without-match 옵션과 동등하다
-i ,  –ignore-case , 주어진 패턴이나 입력파일에서 대소문자를 무시한다.
-L ,  –files-without-match , 일반적으로 출력되는 출력을 스킵하고 각각의 입력파일을 출력한다. 처음으로 매칭되는 파일이 나타나면 중지된다
-l ,  –files-with-matches , -L 과 반대
-n ,  –line-number , 문자열이 들어있는 라인과 문두에 라인번호를 출력
-r ,  –recursive , 하위 디렉토리를 순환적으로 모두 읽는다. -d recurse 옵션과 동등하다
-V ,  –version , 표준에러로 grep의 버전을 출력한다.
-v ,  –invert-match , 문자열이 포함되어 있지 않은 라인을 출력
-w ,  –word-regexp , pattern 이 전체 단어와 일치하는 줄만 출력 / 단어의 일부로써 일치하는 경우가 아닌 하나의 단어로써 일치하는 줄이 출력.
-x ,  –line-regexp , pattern 이 전체 줄과 일치하는 줄만 출력

[/table]

 

[table caption=”Linux grep 정규표현식” colwidth=”100|150|100″ colalign=”center|left|center|left”]
메타문자,기 능,사용 예,사용 예 설명
^ , 행의 시작 지시자 , ‘^love’ , love로 시작하는 모든 행과 대응
$ , 행의 끝 지시자 , ‘love$’ , love로 끝나는 모든 행과 대응
. , 하나의 문자와 대응 , ‘l..e’, l 다음에 두 글자가 나오고 e로 끝나는 문자열을 포함하는 행과 대응
* , 선행문자와 같은 문자의 0개 혹은 임의개수와 대응 , ‘ *love’ , 0개 혹은 임의 개수의 공백 문자 후에 love로 끝나는 문자열을 포함한 행과 대응(*앞에 공백이 있는 상태 / 다른 문자가 있다면 그 문자가 0개 혹은 임의 개수의 문자 후에 love로 끝나느 경우를 말함)
[] , [] 사이의 문자 집합중 하나와 대응 , ‘[Ll]ove’ , love나 Love를 포함하는 행과 대응
[^ ] , 문자집합에 속하지 않는 한 문자와 대응 , ‘[^A-K]love’ , A와 K 사이의 범위에 포함되지 않는 한 문자와 ove가 붙어있는 문자열과 대응
\< , 단어의 시작 지시자 , ‘\<love’ , love로 시작하는 단어를 포함하는 행과 대응(vi / grep에서 지원)
\> , 단어의 끝 지시자 , ‘love\>’ , love로 끝나는 단어를 포함하는 행과 대응(vi / grep에서 지원)
\(..\) , 다음 사용을 위해 태그를 붙인다. , ‘\(lov\)ing’ , 지정된 부분을 태크1에 저장한다. 나중에 태그값을 참고하려면 \1을 쓴다. 맨 왼쪽부터 시작해 태그를 9개가지 쓸 수 있다. 왼쪽 예에서는 lov가 레지스터1에 저장되고 나중에 \1로 참고할 수 있다.
x\{m\} , 문자 x를 m번 반복한다. , ‘o\{5\}’ , 문자 o가 5회 연속적으로 나오는 모든 행과 대응
[/table]

답글 남기기