본문 바로가기
Programming/Linux

awk

by NAMP 2009. 6. 2.

 

bash, awk 스크립트로 게을러지기

꼭 봐야할 문서들

 

awk

자료 처리 및 리포트 생성에 사용하는 프로그래밍 언어 // 

필드단위로 처리

 

  1. awk '{print $1}' datafile

파일의 첫 번째 필드를 출력한다. 첫 번째 필드는 각 행의 맨 왼쪽 경계에서 시작하고 공백 문자로 구분되는 영역을 의미한다.

 

  1. awk '/Tom/{print $1, $2}'datafile

파일에서 Tom를 포함하는 행들의 첫 번째와 두 번째 필드를 출력한다. 

$1 : 첫번째 필드

$2 : 두번째 필드

 

  1. df | awk '$2 > 80000'

df 명령어를 통해 출력되는 내용 중 두 번째 필드가 80000보다 큰 행이 출력이 된다.

 

  1.  date | awk '{print "Month : "$2 "\nYear : "$6}'

date 명령을 통해 출력되는 두 번째 필드와 여섯 번째 필드를 print 함수를 이용하여 출력.

 

  1.  awk '{print NR, $1, $3}'datafile

NR 변수(하나의 레코드를 처리한 후 1이 증가하는 변수)를 사용하여 레코드의 번호와 함께 파일이 내용대로 출력

 

  1. awk '{print $1, $3, NF}'datafile

NF 변수(필드의 개수를 출력하는 변수) 를 사용하여 레코드의 번호와 함께 각 행의 필드의 개수도 함께 출력

 

  1. awk -F : '/root/{print $0}' /etc/passwd

":" 구분자를 기준으로 필드를 나누며 root를 포함하는 행을 출력

  • $0 : 모든 필드 

 

  1. awk -F : '/^[ns]/{print $1}' datafile

n이나  s로 시작하는 행의 첫 번째 필드를 출력.  ":" 로 필드 구분.

 

  1. awk -F '[\t]' '{print $1, $2, $3}' employees

TAB으로 필드를 구분하여 나누며 첫 번째, 두 번째, 세 번째 필드를 출력한다. 작은 따옴표로 묶은 이유는 쉘이 대괄호를 해석해 버리는 것을 방지하기 위해서 이다.

 

  1. awk '$1 ~ /[bB]ill/' employees

Match 연산자(~, tilde)는 특정 레코드나 필드 내에서 일치하는 정규 표현식 패턴이 존재하는 지 검사하는 데 쓰임

 

  1. awk '$1 !~ /ly$/' employess

첫 번째 필드가 ly로 끝나지 않는 행들을 출력한다.

 

  1. awk '$4 ~ /chin$/{print "The price is $" $8 "."}' FILE

네 번째 필드가 chin 으로 끝나면 문자열 The price is $와 여덟 번째 필드 ($8) 및 마침표를 함께 출력한다.

 

  1. 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

댓글