Linux,Unix,BSD

[shell] 특정 문자열이 포함된 줄 번호 출력하기

채윤아빠 2021. 10. 26. 21:51
728x90
반응형

개요

쉘에서 파일에서 특정 문자열이 포함된 줄 번호를 출력하는 방법을 알아 보겠습니다.

시험환경

  • OS : Ubuntu 20.04 LTS x86_64
  • 예제 파일
Here are some examples of running GNU Hello.

   This is the output of the command 'hello':

     Hello, world!

   This is the output of the command 'hello --traditional':

     hello, world

   This is the output of the command 'hello --greeting=hi':

     hi

 


grep

가장 손쉬운 방법으로 "grep" 명령의 "-n" 옵션을 이용하는 방법입니다. 사용법은 다음과 같습니다.

$ grep -n "traditional" test.txt
7:   This is the output of the command 'hello --traditional':


"traditional" 문자열 패턴이 포함된 줄의 번호와 함께 포함된 줄의 전체 내용까지 출력해 줍니다.

여러 곳에 포함되어 있다면 포함된 모든 줄이 출력됩니다.

$ grep -n "hello" test.txt
3:   This is the output of the command 'hello':
7:   This is the output of the command 'hello --traditional':
9:     hello, world
11:   This is the output of the command 'hello --greeting=hi':

sed

커맨드 라인 편집기로 유용한 "sed"를 이용해도 특정 문자열 패턴이 포함된 줄들의 번호를 출력할 수 있습니다.

$ sed -n "/traditional/=" ./test.txt
7
$ sed -n "/hello/=" ./test.txt
3
7
9
11

결론

특정 파일에서 패턴 문자열을 조회하여 그 결과에 따라 내용을 추가하거나 편집 등의 작업을 수행하는데 유용하게 이용할 수 있습니다.