[awk] 아주 간단한 awk 사용법
2020. 3. 6. 12:42
awk??
- 리눅스에서 데이터를 조작하여 출력하는 패키지
- Alfred Aho, Peter Weinberger, Brian Kernighan 3명이 만들었는데 이들의 이름 이니셜을 가져와서 awk라고 부름
- 로그를 볼때, 특정 파일을 분석할때 유용하다
기본 Input 사용법
- 두가지 방법으로 input을 넣을수 있다.
- input file을 직접 넘겨주는 경우
- awk {command} {input file}
- pipeline을 쓰는 경우
- cat {input file} | awk {command}
기본 명령 사용법
- awk는 기본적으로 text를 구분하는 구분자
FS
를 가진다.- default
FS
는 공백이며 변경은 -F옵션으로 가능하다.awk -F',' ...
- default
- 또한 newline으로 구분되는 line에 대해서 pattern을 적용하여 검색이 가능하다.
- 명령 패턴
- pattern = line검색, command = awk명령
awk 'pattern' awk '{command}' awk 'pattern {command}'
- pattern = line검색, command = awk명령
예시
awk '/test/' {inputfile}
- inputfile에서 test라는 패턴을 가진 line을 찾는다.
awk '{print $1}' {inputfile}
- inputfile의 모든 line에 대해서 공백으로 라인을 잘라서 가장 첫번째에 있는 데이터를 출력한다.
- print : awk가 출력을 위해서 사용하는 명령,
- printf도 가능하다:
awk '{printf("%s", $1)}' {inputfile}
- $1: awk는 구분자(
FS
)로 구분된 데이터들을 각 번호에 할당한다 (100개까지 가능?)- $0: 전체 라인
- $1: 첫번째 데이터
- $2: 두번째 데이터
- ...
- printf도 가능하다:
awk -F',' '/test/ {printf("%s", $2)}' {inputfile}
- inputfile에서 test라는 패턴을 가진 line을 찾아서 콤마(,)로 구분하여 2번째에 있는 데이터를 출력한다.
활용
특정 프로세스를 찾아 해당 프로세스의 pid에 대해서 signal을 날리고 싶을 때
일단 pid가 몇번째 필드인지 확인한다
garyj@GaryJ-MacBookPro❯ ps aux | head USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND garyj 88274 10.8 2.3 5898556 392404 ?? S 월09AM 91:09.44 /Applications/iTerm.app/Contents/MacOS/iTerm2
2번째 필드 이므로 아래와 같이 pid를 출력한다(대상 프로세스 iTerm)
garyj@GaryJ-MacBookPro❯ ps aux | awk '/iTerm/ {print $2}' 88274
kill로 signal을 날린다
```bash garyj@GaryJ-MacBookPro❯ kill -9 $(ps aux | awk '/iTerm/ {print $2}')
'프로그래밍 > bash' 카테고리의 다른 글
[openssl] openssl client로 인증서 만료일 확인하기 (0) | 2020.02.28 |
---|---|
[Bash] shell 스크립트 기본 (0) | 2020.02.28 |