bash script2023. 7. 3. 18:20

 

반달가면 이글루에서 백업 - 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 명령을 이용한 특정 범위의 행 추출에 대한 내용은 여기로.

 

 

 

728x90
Posted by 반달가면