딩굴댕굴

Linux - 10. awk

by jennysgap

BOX

awk

awk는 개발자 3명의 이니셜을 따서 만든 이름으로 주로 연산등을 명령 줄에서

수행하기 위해 만든 명령. C언어 문법 및 함수 적용이 가능.

* awk명령의 장점은 기존 유닉스 계열 명령이 필드에 대한 작업이 불가능했는데,

  작업 시 필드에 대한 처리가 가능하도록 만들어짐.

[사용법] #  awk  [-option]  'Action'  텍스트파일


<Action>

/pattern/                                 -  검색 기능 

/pattern/{print $1, $2, $3 ....}  - 검색 후 특정 필드들 출력

{print $1, $2, ... }                     - 특정 필드들 출력 시


<사용예>

awk -F: '{print $1, $3, $4, $6}' /etc/passwd

awk -F: '{print $1, $3}' /etc/group

awk -F: '/root/{print $1, $3}' /etc/group

* -F:  :  필드구별자로 ':'을 사용, 기본적인 필드 구별자는 space를 사용.

      

* 필드의 표시 $1, $2, .... 로 표시, $0는 라인 전체 출력. 필드는 원하는 위치대로 배열이 가능. $2, $1

* 출력 결과물의 필드구별자 조정 ',' 대신 "\t", "\n" 등을 사용할 수 있음.

* 측별한 표현식

# awk -F  : '{print NR":",$0}' /etc/group       NR : Number of Record 숫자뒤에 붙일수있음   ex) 1: 2:

# awk -F  : '{print NR":"NF}' /etc/group        NF : Number of field 필드 확인할 때 (내용은 안나오고 확인만 가능)

# awk '{FS=":"} {print $1,$2}'                         FS : Field Seperate 옵션 해제할 때

# awk '{OF="\t"} {print $1,$2}' /etc/group     OF : Output Field Seperate   

# awk 'BEGIN{print"+++++++++++++++++++HEAD LINE++++++++++++++++++++"}{FS=":"}{print $1,$2,$7}'/etc/group

EGIN{} : Head line 삽입 특별한 액션 라인마다 동작하는게아니라 라인들어가기 직전에 동작

# awk -F'{print NR,$1,$2,$3} END{print "Total line : " NR}/etc/passwd

END{} : End Pattern(주로 수식 등의 계산에 사용) 

 

반응형

'BOX' 카테고리의 다른 글

Linux - 12. 기타 명령  (0) 2016.12.07
Linux - 11. 퍼미션  (0) 2016.12.07
Linux - 09. sed에디터  (0) 2016.12.07
Linux - 08. 확장 명령(grep, find)  (0) 2016.12.07
Linux - 07. Vi 편집기  (0) 2016.12.07

블로그의 정보

jennysgap

jennysgap

활동하기