article thumbnail image
Published 2022. 12. 16. 16:09

AWK(Aho Weinberger Kernighan)

유닉스에서 개발된 스크립트 언어로 텍스트가 저장되어 있는 파일을 원하는 대로 필터링하거나 추가해주거나 기타 가공을 통해서 나온 결과를 행과 열로 출력해주는 프로그램입니다. 

 

필드는 열(Column), 세로줄이고

레코드는 행(Line), 가로줄이다.

 

<테스트 파일로 사용할 txt파일>

 

기본 문법

awk [옵션] 'pattern { action }' [파일|변수값]
awk 옵션 설명
-u 버퍼를 사용하지 않고 출력한다.
-F  확장된 정규 표현식으로 필드구분자를 지정한다, 다중 필드 구분자 사용 가능하다.
awk -F 단일로 사용시 ':' 를 필드구분자로 사용
awk -F'[ :\t]' 다중 필드구분자 ':'와 tab을 필드구분자로 사용
-v 스크립트를 실행하기 전에 미리 변수를 지정하여 준다.
-f awk 명령 스크립트를 파일에서 읽어온다.

 

awk 동작 원리 - 패턴(pattern) 과 액션(action)

테스트파일

패턴을 사용해서 출력

share라는 단어가 있는 행의 3번째 열과 4번째 열의 데이터를 곱해서 출력해라

1번째 열에 share라는 단어가 있는 3,4번째 열을 곱해라 -> 1번째열에 share가 없으므로 아무것도 출력되지않는다

2번째 열에 ~ : share가 있기때문에 100 출력 


변수명       내용 
------------------------------------
FILENAME   현재 처리중인 파일명 
FS       필드 구분자로 디폴트는 공백 
RS       레코드 구분자로 디폴트는 새로운 라인 
NF       현재 레코드의 필드 개수 (number of Fields)
NR       현재 레코드의 번호 (number of Record)
OFS       출력할 때 사용하는 FS 
ORS       출력할 때 사용하는 RS 
$0       입력 레코드의 전체 
$n       입력 레코드의 n번째 필드 

awk  비교 Operator
=================================================================
<    Less than.
<=    Less than or equal.
==    Equal.
!=    Not equal.
>=    Greater than or equal.
>    Greater than.
~    Contains (for strings)
!~    Does not contain (strings)

awk  산술 Operator
=================================================================
+   plus
-   minus
*   multiply
/   divide : 몫
%   module : 나머지
**   power : 거듭제곱

Assignment(할당)
더하기의 결과를 대입
a += 10 : a = a+10
d += c
a = a + 10
a = a + c
-=

빼기의 결과를 대입
a -= 10
d -= c
a = a - 10
a = a - c

*= 곱하기의 결과를 대입
a *= 10
d *= c
a = a * 10
a = a * c

%= 나머지의 결과를 대입
a %= 10
d %= c
a = a % 10
a = a % c

'IT > Linux' 카테고리의 다른 글

[Linux] htop, atop, nmon, glances, lsof, tcpdump, iostat, pmap  (0) 2022.12.16
[Linux] SED 명령어 사용법  (0) 2022.12.15
정규표현식  (0) 2022.12.14
2 -  (0) 2022.12.13
Docker2  (0) 2022.12.08
복사했습니다!