Linux command - grep

sycho·2024년 1월 2일
0

Linux Commands

목록 보기
22/30

grep

  • documentation. GNU 기준.

  • global search for regular expression and print out의 약자다.

  • 파일 내에 특정 조건을 만족하는 문자열이 있는지를 확인, 이를 하이라이트 해서 보여준다.

  • 파일 뿐만 아니라 특정 출력물에 대해서도 파이프라이닝(pipelining)을 통해 활용이 가능하다.

  • 매우 자주 쓰이는 명령어다.

basics

  • 기본 구조는 다음과 같다.
grep [options] pattern [files]
  • options : grep과 관련된 설정들

  • pattern : 필터링용 regular expression

  • files : 필터링 대상 파일. 여러개 가능.

examples

  • 밑은 예시서 사용한 파일
$ cat example.txt
sed is a stream editor.
A stream editor is used to perform basic text transformations on an input stream (a file or input from a pipeline).
While in some ways similar to an editor which permits scripted edits (such as ed), sed works by making only one pass over the input(s), and is consequently more efficient.
But it is sed’s ability to filter text in a pipeline which particularly distinguishes it from other types of editors.
  • 기본적으로는 밑과 같이 나온다.

대소문자 구별 없이 찾기 (-i)

  • 글자만 같으면 대문자든 소문자든 일단 조건에 부한하는 것으로 취급하게 하는 option

조건을 만족하는 줄의 개수만 출력 (-c)

$ grep -c "a" example.txt
4

조건을 만족하는 줄을 포함하는 파일들 출력 (-l)

sycho@DESKTOP-4RPUOID:~$ ls
Backend-Practice  demo                            example.txt  nums.txt    words.txt
data.txt          devops-directive-docker-course  months.txt   sorted.txt  wordsup.txt

sycho@DESKTOP-4RPUOID:~$ grep -l "ex" *
grep: Backend-Practice: Is a directory
grep: demo: Is a directory
grep: devops-directive-docker-course: Is a directory
example.txt

조건에 있는 단어를 정확히 포함하는 줄 출력 (-w)

  • grep은 기본적으로 pattern부분이 단어의 일부분의 형태로라도 나오면 일단 나온다고 취급을 하는데, 특정 단어가 정확히 포함하는 경우에 대해 찾고 싶으면 -w를 사용해야 한다.

조건 부분을 포함하는 문자열만 출력 (-o)

  • grep은 기본적으로 pattern부분이 나타나는 줄들을 출력하는데, pattern이 나오는 문자열만 딱 출력하고 싶으면 -o를 사용해야 한다.

pattern이 나온 줄의 번호도 출력 (-n)

pattern이 '없는' 파일 내 줄들을 탐색 (-v)

pattern으로 시작하는 파일 내 줄들을 탐색 (^)

  • 정확히는 regular expression 문법을 활용하는 것이다.

pattern으로 끝나는 파일 내 줄들을 탐색 ($)

  • 이것도 regular expression 문법을 활용하는 것이다.

여러 pattern에 대해서 탐색 (-e)

  • 여러번 사용 가능

  • 해당 pattern들 중 하나라도 만족하는 줄이 있으면 이를 전시한다.

pattern을 파일에 있는 것 사용하기 (-f)

pattern이 등장한 줄의 이전/이후 줄 출력 (-A, -B, -C)

  • -A는 pattern이 등장한 줄의 이전 출도 출력한다. -B는 이후의 줄을 출력한다. -C는 이전/이후 줄을 출력한다.

  • 세개 모두 옆에 숫자를 통해 이전/이후의 몇개의 줄을 출력할지를 지정한다.

  • 이전/이후 줄이 pattern에서 등장한 줄이라면 딱히 추가로 출력하진 않는다.

디렉토리 안에서 재귀적으로 pattern 포함하는 파일들 찾기 (-R)

  • 이 경우 파일 대신 재귀적으로 탐색할 디렉토리를 지정해야 한다.

  • 어떤 파일에서 등장하는지도 나온다.

  • 줄 번호까지 나오게 하려면 -n을 사용하자.
    업로드중..
profile
CS 학부생, 핵심 관심 분야 : Embed/System/Architecture/SWE

0개의 댓글