[bash: grep] 문자열 검색하면서 행번호 같이 표시하기 리눅스 bash script

grep 명령으로 검색하고자 하는 문자열이 몇번째 행에 있는지 알고 싶다면 -n 옵션을 사용하면 된다. 아래의 예시를 보자.

# file.txt에서 문자열 abcde 검색, 행번호(line number) 표시
grep -n "abcde" file.txt
10:abcdef
12:abcde

파일 안에서 특정 문자열이 경계선으로 사용될 경우 요긴하게 쓸 수 있다. 예를 들어 html 파일에서 헤드(head) 부분만 골라내는 경우를 생각해 보자. <head>가 위치한 행부터 </head>가 위치한 행까지를 추출하면 된다. 아래의 예시를 보자. test.html 파일에서 헤드 부분만 추출해서 test_head.txt 파일로 저장하는 경우다.

# <head> 검색후 cut 명령으로 행번호만 추출하여 변수 head_start에 할당
head_start=`grep -n "<head>" test.html | cut -d':' -f1`
# </head> 검색후 cut 명령으로 행번호만 추출하여 변수 head_end에 할당
head_end=`grep -n "</head>" test.html | cut -d':' -f1`
# sed 명령으로 head_start부터 head_end까지 추출하여 test_head.txt에 저장
sed -n $head_start,${head_end}p test.html > test_head.txt

sed 명령에서 출력 범위 지정을 위한 'p' 문자가 변수명(head_end)와 구분되도록 하기 위해 중괄호(${})를 사용하고 있음에 유의하자. 관련 내용은 이전 게시물을 참고하자. 여기로. sed 명령을 이용한 특정 범위의 행 추출에 대한 내용은 여기로.
 


핑백

  • 반달가면 : [bash: grep] 탭(tab)이 포함된 문자열 검색 2016-03-07 23:47:10 #

    ... bc${tab}def" file.txt abc def 단순히 문자열만 검색할 경우에는 awk나 grep이나 대동소이할 수 있으나, 행번호를 같이 표시하거나(-n 옵션) 일치하는 행 위/아래의 내용을 확인하는 등(-A, -B 옵션) grep의 유용한 옵션들이 필요할 경우 위와 같은 방법으로 사용하면 되겠다. # file.tx ... more

덧글

댓글 입력 영역
* 비로그인 덧글의 IP 전체보기를 설정한 이글루입니다.

Google Analytics


B-Side


adsense(w160_h600)2

통계 위젯 (화이트)

9901327
5348
1764963

ad_widget_2