2010. 1. 13. 10:54

[Script]sed, awk 사용법 2


-n 파일 안에서의 패턴이 발견된 라인 및 라인 번호
-v 패턴이 발견되지 않은 라인
-i 대소구분 무시(ignore)
-l 패턴이 들어있는 파일 이름만
-c 패턴이 들어있는 라인 번호만

 

#### 줄 관련 명령어와 기능
d  텍스트 줄 삭제 명령
a\   텍스트 줄 다음에 첨가 명령
i\    텍스트 줄 앞에 첨가 명령
c\   텍스트 줄 변경 명령
n      다음 텍스트 줄을 읽는 명령
g      전파일 부분을 치환하는 명령
=      현재 줄 번호를 출력
[/패턴/]=   대응되는 줄의 패턴과 일치하는 각 줄의 번호를 표준 출력
p     패턴 일치되는 줄을 표준 출력
s/패턴/대체패턴/      플래그 패턴을 대체패턴으로 바꿈.  플래그는 g, p, wfile
y/문자열1/문자열2/     문자열1과 문자열2를 서로 바꿈

 

^      : ^패턴            : 패턴으로 시작하는 모든 라인 찾기
$      : 패턴$           : 패턴으로 끝나는 모든 라인 찾기
.       : d...              : d로 시작하는 4자리 character 찾기
*      : [a-d]*          : a, b, c, d로 시작하는 character 찾기
[]    : [Dd]atabase  : Database 또는 database 찾기
[^]   : [^D]             : D가 나타나지 않는 라인 찾기


# sed '#d' filename      : # 라인만 삭제
# sed '$d' filename      : 마지막 라인 삭제
# sed '#,$d' filename   : # 라인부터 마지막 라인까지 지우기
# sed '#,#d' filename   : # 라인부터 # 라인까지 지우기
# sed '1d' sed_test     # 1 라인만 삭제
# sed '$d' sed_test     # 마지막 라인만 삭제
# sed '/purpose/d' sed_test > set_out     # sed 처리 결과를 sed_out 으로 저장
# cat set_out
# sed '/purpose/p' sed_test             # 패턴이 포함된 라인이 두번 출력(print)된다.
# sed -n '/purpose/p' sed_test        # 패턴이 포함된 라인만 출력된다.
# sed 's/$/  Oracle/' sed_test       # 각 라인의 마지막에 원하는 글자 추가
# sed 's/  */#/g' sed_test              # space를 찾아서 #기호로 변환한다.
# sed 's/  */-/g' sed_test              # space를 찾아서 -기호로 변환한다.
                                                               # * 기호 앞에 space가 두개라는 점에 유의

## 한번에 여러 가지 편집 수행
# sed -e 's/database/DATABASE/g' -e 's/information/INFORMATION/g' sed_test

 

▒ awk : 패턴 검색과 처리를 위한 언어  >>  awk '{ action}' filename

# ls -l | awk '{print $0}'              # 전체 필드가 모두 나타나도록...
# ls -l | awk '{print $1}'                    # 1번 필드만 나타도록...
# ls -l | awk '{print $1, $9}'               # 1번과 9번 필드만 나타나도록...
# ls -l | awk '{print $3 "\t" $4 "\t" $9}'                # Tab 키가 적용된 결과...
# ls -lt | awk '{print $9, "is using", $5, "bytes"}'     # text 추가
# ls -lt | awk '$5 <= 200 {print $0}'   # 5번 필드가 200 이하일 경우 출력    

[출처] http://blog.naver.com/siyang6?Redirect=Log&logNo=30048138641