text 데이터나 리포드를 작성 하는 데 사용 되는 프로그래밍 언어.
표준입력 으로 들어오는 데이타를 처리하여 , 표준 출력으로 출력 하는 프로그램
프롬프트상에서 간단히 입력 할 수도 있고, 복잡한 프로그램을 작성 할 수도 있다
awk 'pattern' filename
awk '{ action }' filename
awk 'pattern { action }' filename
ex>
$ awk '/닉스/' employees // 패턴검색
$ awk ' { print $1 }' employees // 파일의 모든 라인에 대해서 해당 명령 처리
$ awk '/닉스/{ print $1,$2 }' employees // 패턴검색 후 해당 라인에 대한 명령 처리
command | awk 'pattern' filename
command | awk '{ action }' filename
command | awk 'pattern { action }' filename
ex>
$ df | awk '$4 > 300000'
$ w | awk '/fith/{ print $1,$3 }'
$ date | awk '{print "현재 년도 :" $1 "\n현재 월 : " $2}'
- \b : 백 스페이스 - \f : form feed - \n : new line
- \r : carriage return - \t : tab - \x : escape caracter x
$ awk '/닉스/{print "\t\tHave a nice day," $1,$2 "!"}' employees
$ echo "UNIX" | awk '{ printf "|%-15s|\n",$1 }'
$ echo "UNIX" | awk '{ printf "|%15s|\n",$1 }'
$ awk '{ printf "The name is: %-15s ,ID is %8d\n", $1$2,$3 }' employees
- %c : ASCII 문자 하나. - %s : ASCII 문자열. - %f : 부동소수점.
- %d : 10 진수. - %o : 8 진수 . - %x : 16 진수 .
$ awk -f awkfile employees
변수 | 설명 |
FILENAME |
현재파일명 |
FS |
필드 구분자 |
NF |
현재라인의 필드 수 |
NR |
현재라인의 레코드 번호 |
OFMT |
숫자 출력을 위한 포맷(예를 들어 %.6g) |
OFS |
출력 필드 구분자(디폴트는 blank) |
ORS |
출력 레코드 구분자(디폴트는 newline) |
RS |
레코드 구분자(디폴트는 newline) |
$0 |
전체 입력라인 |
$n |
n번째 필드의 내용(각 필드는 FS로 구분된다.) |
$ awk '{ print $0 }' employees
$ awk '{ print }' employees
$ awk '{ print NR , $0 }' employees
$ awk -F: '/^root/{print $6 ,$7}' /etc/passwd
$ awk -F'[ :\t]' '{ print $1,$2,$3}' /etc/passwd
$ awk '/^[A-Z][a-z]+ /' employees
$ awk '$1 ~ /[Bb]ill/' employees
$ awk '$1 !~ /[Bb]ill/' employees
< , ⇐ , == , != , >=, > ,&& ,||,!
$ awk '$3 > 1234' employees
$ awk '$3 > 1234 && 4500 > $3' employees
$ awk '!($3 < 1234 || 4500 < $3)' employees