AWK는 1977년 bell 연구소의 Aho, Weinberger, Kernighan 에 의해 만들어졌으며 유래되었습니다.
특정 패턴을 원하는 포맷으로 처리하기 위해 개발된 Shell 에서 바로 사용 가능한 일종의 유틸리티이며 언어이고
텍스트 파일로 표준 입력을 받아들여 목적에 맞게 출력 할 수 있는 문자처리 언어입니다.
쉘프로그램이나 쉘에서 바로 사용이 가능하고 C언어와 유사한 프린팅, 제어연산자도 가지고 있습니다.
서버 업무를 하다보면 서버의 내의 파일중에 원하는 출력문 또는
몇몇 가지를 필터 하거나 특정 필드의 값만 필요한 경우가 있는데
sort , grep , cut 등의 명령어 처럼 awk 또한 많이 쓰이고 있습니다.
awk 명령어의 형식과 활동 방법에 대해서 몇가지 적습니다.
▣ 명령어 형식
실행파일 위치 : /bin/awk
사용형식 :
awk [옵션] '스크립트' [변수=값] [파일..]
awk [옵션] [-F] ''
▣ 활용방법
예를들어 설명하겠습니다. ( 개인취향이 섞여 여자가수로만 ..예로 듭니다. )
첫번째 열은 가수 또는 그룹 이름, 2번째 열은 앨범 가격 , 3번째 열은 1분기 판매량.
4번째 2분기, 5번째 3분기 , 6번째 열은 4분기 판매량 입니다.
hoon-pc test # cat awk.test <== 파일이름은 awk.test
IU 15,500 22 42 31 55
Sosi 16,000 34 49 12 47
missA 14,000 24 33 41 34
Apink 14,500 26 36 49 41
Aoa 15,000 32 35 29 52
1. 위 자료로 토대로 2가지 필드를 추가 시킬려고 합니다.
첫번째는 .1분기부터 4분기의 앨범판매 숫자 합계.
두번째는. 앨범 총 판매 액수를 넣어주고싶습니다.
다음과 같이 vi 로 열어 해당 구분을 넣어주고 저장하고 나옵니다.
vi add.test
hoon-pc test # awk -f add.test awk.test
IU 15,500 22 42 31 55 150 2250
Sosi 16,000 34 49 12 47 142 2272
missA 14,000 24 33 41 34 132 1848
Apink 14,500 26 36 49 41 152 2128
Aoa 15,000 32 35 29 52 148 2220
이런 결과 값이 나오는 이유는 add.test 에 들어 있는 구문에 의해서 인데 구문안의 ; 로 의하여 두가지로 분류가 되었습니다.
첫번째 부분은 분기별 판매량을 다 더하고 그걸 total 변수 선언해준것. ,
두번째는 판매량 총합의 total 의 변수값에서 X$2 를 해주는데 이건 합계 X두번째 열을 뜻합니다.
2. awk 패턴과 연산
awk가 읽어들이는 라인과 필드들의 대한 작업은 패턴-연산의 쌍으로 정의 되며 이쌍은 다음과 같은 형식을 갖습니다.
pattern
이번에 해볼 연산은 입력 필드의 순서를 바꿔서 출력 해보겠습니다.
hoon-pc test # awk '' awk.test <=== vi 로 파일 하나 만든후 안에 구문을 넣고
awk -f 구문파일명 대상파일명 으로 해도 됩니다.
15,500 IU
16,000 Sosi
14,000 missA
14,500 Apink
15,000 Aoa
이런식으로 바꾸워서 출력을 합니다.
이번에는 Sosi 라는 패턴과 일치하는 라인을 뽑고 순서 바꿔서 출력하기.
hoon-pc test # awk '/Sosi/ ' awk.test
16,000 Sosi
이번에는 첫글자가 A 로 된것중에 추가로 넣을 단어도 입력 해보겠습니다.
hoon-pc test # awk '/^[A]/ ' awk.test
Apink Good~!
Aoa Good~!
정규식 표현을 써서 출력을 해봤는데요 첫번째 열중에 대문자 A로 되어있는 행을 찾고
그 행중에 첫번째 열만 출력 하시오 라는 의미로 보시면 됩니다.
우리 여가수분들 잘 걸러서 출력 되네요. 굳 ㅜㅜ
'Technical > System' 카테고리의 다른 글
logwatch,Sendmail /var/spool/clientmqueue 용량 (0) | 2021.04.21 |
---|---|
php.ini soap 모듈 설치 (0) | 2021.04.16 |
Redhat Linux RPM 사용법 (0) | 2021.04.16 |
네트워크 루핑 (looping)이 발생될때 서버는 어떤 로그를 남기는가? (0) | 2021.04.16 |
Linux "grep" 명령어 활용 (0) | 2021.04.16 |
댓글