반달가면 이글루에서 백업 - http://bahndal.egloos.com/574347
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 script' 카테고리의 다른 글
[bash: bc] 자연수 나눗셈에서 올림/반올림 (0) | 2023.07.04 |
---|---|
[bash: grep] 탭(tab)이 포함된 문자열 검색 (0) | 2023.07.04 |
[bash: grep] 정규표현식에 사용되는 특수문자 (0) | 2023.07.03 |
[bash: ${}] 셸 파라메터 확장(shell parameter expansion) (0) | 2023.06.30 |
[bash: expr] 특정 위치에서 특정 길이만큼 문자열 추출 (0) | 2023.06.30 |