bash, awk 스크립트로 게을러지기
꼭 봐야할 문서들
- AWK Language Programming
- BASH Programming - Introduction HOW-TO
- gnulamp.com
- 유닉스를 능숙하게 사용하기: 고급 셸 스크립트 기법
- 유닉스를 능숙하게 사용하기: !$#@*%
awk
자료 처리 및 리포트 생성에 사용하는 프로그래밍 언어 //
필드단위로 처리
- awk '{print $1}' datafile
파일의 첫 번째 필드를 출력한다. 첫 번째 필드는 각 행의 맨 왼쪽 경계에서 시작하고 공백 문자로 구분되는 영역을 의미한다.
- awk '/Tom/{print $1, $2}'datafile
파일에서 Tom를 포함하는 행들의 첫 번째와 두 번째 필드를 출력한다.
$1 : 첫번째 필드
$2 : 두번째 필드
- df | awk '$2 > 80000'
df 명령어를 통해 출력되는 내용 중 두 번째 필드가 80000보다 큰 행이 출력이 된다.
- date | awk '{print "Month : "$2 "\nYear : "$6}'
date 명령을 통해 출력되는 두 번째 필드와 여섯 번째 필드를 print 함수를 이용하여 출력.
- awk '{print NR, $1, $3}'datafile
NR 변수(하나의 레코드를 처리한 후 1이 증가하는 변수)를 사용하여 레코드의 번호와 함께 파일이 내용대로 출력
- awk '{print $1, $3, NF}'datafile
NF 변수(필드의 개수를 출력하는 변수) 를 사용하여 레코드의 번호와 함께 각 행의 필드의 개수도 함께 출력
- awk -F : '/root/{print $0}' /etc/passwd
":" 구분자를 기준으로 필드를 나누며 root를 포함하는 행을 출력
- $0 : 모든 필드
- awk -F : '/^[ns]/{print $1}' datafile
n이나 s로 시작하는 행의 첫 번째 필드를 출력. ":" 로 필드 구분.
- awk -F '[\t]' '{print $1, $2, $3}' employees
TAB으로 필드를 구분하여 나누며 첫 번째, 두 번째, 세 번째 필드를 출력한다. 작은 따옴표로 묶은 이유는 쉘이 대괄호를 해석해 버리는 것을 방지하기 위해서 이다.
- awk '$1 ~ /[bB]ill/' employees
Match 연산자(~, tilde)는 특정 레코드나 필드 내에서 일치하는 정규 표현식 패턴이 존재하는 지 검사하는 데 쓰임
- awk '$1 !~ /ly$/' employess
첫 번째 필드가 ly로 끝나지 않는 행들을 출력한다.
- awk '$4 ~ /chin$/{print "The price is $" $8 "."}' FILE
네 번째 필드가 chin 으로 끝나면 문자열 The price is $와 여덟 번째 필드 ($8) 및 마침표를 함께 출력한다.
- awk -F : '$7 ~ /bash$/{print "[User: "$1"]\t[Home: "$6"]"}' /etc/passwd
/etc/passwd 파일에서 bash 셀을 사용하는 유저의 계정명과 홈 디렉토리를 다음과 같은 형식으로 출력하시오.
ex) User: [계정명] Home: [홈 디렉토리]
이 글은 스프링노트에서 작성되었습니다.
'Programming > Linux' 카테고리의 다른 글
useradd / groupadd (0) | 2009.11.16 |
---|---|
Samba 의 소스 파일 및 자세한 사용법을 알고 싶으면 (0) | 2009.06.21 |
Process Management (0) | 2009.06.02 |
sed (0) | 2009.06.02 |
User Account Management (0) | 2009.06.02 |
댓글