최근 수정 시각 : 2025-04-07 03:14:41

awk


[[프로그래밍 언어|'''프로그래밍 언어
{{{#!wiki style="font-family: Times New Roman, serif; display: inline;"
]]
{{{#!wiki style="min-height: calc(1.5em + 5px); margin: 0 -10px -5px"
{{{#!wiki style="display: inline-table; min-width: 40%; min-height: calc(1.5em + 5px)"
{{{#!folding [ 목록 펼치기 · 접기 ]
{{{#!wiki style="margin: -5px -1px"
<colbgcolor=royalblue><colcolor=#fff> ※ 나무위키에 등재된 프로그래밍 언어 목록
AActionScript · Ada · Agda · ALGOL · APL · awk
BBASIC · Befunge · Brainfuck
CC · C# · C++ · Carbon · Chef · Clojure · COBOL · CoffeeScript · Coq · Crystal
DD · Dart
EElixir · Elm · emojicode · Erlang · ETA
FF# · Forth · Fortran
GGNU Octave · Go · Groovy
HHaskell · HolyC · HQ9+ · HRON
I
JJava · JavaScript · Julia
KKotlin · Krait
LLean · LISP · Lua
MMalbolge · MATLAB · Max · Mojo · Moonlight
NNim · Nix
OOberon · Objective-C · OCaml · Ook!
PPascal · Perl · PHP · Processing · Prolog · Python
QQ#
RR · Racket · Raku · ReasonML · Ruby · Rust
SScala · Scheme · Scratch · sed · Shakespeare · Shell Script · Smalltalk · Swift
TTypeScript
UUdon
VVisual Basic · Visual Basic .NET · Visual Basic for Applications · vvvv
WWave · Whitespace
X
Y
ZZenScript · Zig
한글누리 · 씨앗 · 아희 · 약속 · 엄랭 · 엔트리 · 창조}}}}}}}}}{{{#!wiki style="display: inline-table; min-width: 40%; min-height: calc(1.5em + 5px)"
{{{#!folding [ 순위 펼치기 · 접기 ]
{{{#!wiki style="margin: -5px -1px -10px"
{{{#!wiki style="min-height: calc(1.5em + 5px); margin: 0 -10px -5px"
{{{#!wiki style="display: inline-table; min-width: 25%; min-height: calc(1.5em + 5px)"
{{{#!folding [ IEEE Spectrum 2024 ]
{{{#!wiki style="margin: -5px -1px"
<tablewidth=100%><tablebgcolor=transparent><colbgcolor=#11a500><colcolor=#fff> 스펙트럼 부문 상위 10개 프로그래밍 언어 <colbgcolor=#ff1100><colcolor=#fff> 직업 부문 상위 10개 프로그래밍 언어
1 Python 1 SQL
2 Java 2 Python
3 JavaScript 3 Java
4 C++ 4 TypeScript
5 TypeScript 5 SAS
6 SQL 6 JavaScript
7 C# 7 C#
8 Go 8 HTML
9 C 9 Shell
10 HTML 10 C++ }}}}}}}}}{{{#!wiki style="display: inline-table; min-width: 25%; min-height: calc(1.5em + 5px)"
{{{#!folding [ Stack Overflow 2024 ]
{{{#!wiki style="margin: -5px -1px"
<colbgcolor=#ffa500><colcolor=#fff> 2024년 Stackoverflow 설문조사 상위 25개 프로그래밍 언어
1 JavaScript <colbgcolor=#ffa500><colcolor=#fff> 14 Rust
2 HTML & CSS 15 Kotlin
3 Python 16 Lua
4 SQL 17 Dart
5 TypeScript 18 어셈블리어
6 Bash 19 Ruby
7 Java 20 Swift
8 C# 21 R
9 C++ 22 Visual Basic
10 C 23 MATLAB
11 PHP 24 VBA
12 PowerShell 25 Groovy
13 Go }}}}}}}}}{{{#!wiki style="display: inline-table; min-width: 25%; min-height: calc(1.5em + 5px)"
{{{#!folding [ TIOBE 2025 ]
{{{#!wiki style="margin: -5px -1px"
<colbgcolor=#2777c2><colcolor=#fff> 2025년 2월 TIOBE 검색어 점유율 상위 20개 프로그래밍 언어
1 Python <colbgcolor=#2777c2><colcolor=#fff> 11 Fortran
2 C++ 12 Scratch
3 Java 13 Rust
4 C 14 PHP
5 C# 15 R
6 JavaScript 16 MATLAB
7 SQL 17 Assembly language
8 Go 18 COBOL
9 Delphi / Object Pascal 19 Ruby
10 Visual Basic 20 Prolog }}}}}}}}}{{{#!wiki style="display: inline-table; min-width: 25%; min-height: calc(1.5em + 5px)"
{{{#!folding [ PYPL 2025 ]
{{{#!wiki style="margin: -5px -1px -10px"
<colbgcolor=green><colcolor=#fff> 2025년 3월 PYPL 검색어 점유율 상위 20개 프로그래밍 언어
1 Python <colbgcolor=green><colcolor=#fff> 11 Swift
2 Java 12 Go
3 JavaScript 13 Kotlin
4 C/C++ 14 MATLAB
5 C# 15 Ada
6 R 16 Dart
7 PHP 17 Ruby
8 Rust 18 Lua
9 TypeScript 19 PowerShell
10 Objective-C 20 VBA }}}}}}}}}}}} }}}}}}}}}}}}
분류:프로그래밍 언어 · 프로그래밍 언어 목록 · 언어별 예제 · 틀:프로그래밍 언어 문법

1. 개요2. 용도3. 특징4. 문법
4.1. 패턴
4.1.1. 특수 패턴
4.2. 변수 선언4.3. 제어문
4.3.1. 조건문4.3.2. 삼항 연산자
4.4. 배열
5. 기타6. 관련 문서

1. 개요

Aho, Weinberger, Kernighan / AWK[1]

스트림 기반 텍스트 처리를 위한 스크립트 언어.

발음은 /ɔːk/로, 외래어 표기법을 따라 표기하면 '오크'다. 외래어 표기법을 따르지 않아도 '오크'라고 읽고 쓰는 경우가 많다.

2. 용도

주로 정규표현식을 사용한 라인 단위의 처리를 하는 데에 매우 효과적이다. 예를 들어 각 행의 모든 숫자를 더해 총합을 계산하는 등의 작업에 효과적이지만, 전체 행을 처음부터 끝까지 읽은 후 정렬하는 등의 작업(불가능한 것은 아니다)을 하기에는 상대적으로 불리하며, 무엇보다 sort명령어가 있다.

또한 전체 데이터가 한 줄로 되어있는 형태의 데이터를 다루기에도 상대적으로 불리하다.

3. 특징

PCRE를 지원하며, C언어와 문법이 비슷하다.

4. 문법

기본적으로
#!syntax javascript
패턴 {
    액션
}
의 정의가 반복되는 형태를 취한다.

액션은 일련의 구문(statement)로 이루어지며, 각 구문은 일반적인 프로그래밍 언어의 행과 비슷하다.

단, awk에서는 행 끝에 ;을 붙혀도 되고, 붙히지 않아도 된다.

4.1. 패턴

패턴은 기본적으로 참 또는 거짓을 가릴 수 있는 표현식이다.

즉, 1 등의 상수도 패턴이 될 수 있으며, 항상 참이거나 항상 거짓으로 판정된다.

보통의 경우 패턴에 정규표현식을 사용한다.
/https?:\/\/\w+\.\w/ {
    print $0
}
위의 코드는 URL이 포함된 모든 행을 출력한다.

4.1.1. 특수 패턴

awk는 대표적으로 다음의 두 가지 특수 패턴을 가지고 있다.
  • BEGIN: 파일의 시작 부분에 매칭된다. 따라서 BEGIN 패턴 안의 액션은 항상 시작시마다 반드시 실행된다. 주로 초기화 구문, 구분자 변수 설정 등의 코드가 위치한다. C언어의 main함수와 같은 역할을 한다고 볼 수 있지만, C와는 다르게 유일한 진입점은 아니다.
  • END: 파일의 끝(EOF)에 매칭된다. 따라서 이 안의 코드 또한 파일을 모두 읽어들인 시점에 반드시 실행된다. 주로 결과 계산, 결과 출력 등의 코드가 위치한다.

4.2. 변수 선언

#!syntax javascript
variable = 123
과 같이 <변수명> = <대입할 값> 형태로 사용한다.

타입은 문자열, 숫자 등이 존재하며 타입 명시는 필요하지 않다.

4.3. 제어문

awk는 문법적으로 C언어의 후손이다. 따라서 많은 내용을 C언어/문법과 공유한다.

4.3.1. 조건문

#!syntax javascript
if (<condition>) <statement>;

또는
#!syntax javascript
if (<condition>) {
    <statement>;
    <statement>;
}

위와 같이 사용한다.

4.3.2. 삼항 연산자

#!syntax javascript
res = cond ? val1 : val2
의 형식으로 사용한다.

4.4. 배열

awk에서의 배열은 JavaScript와 같이 실제로는 해시(맵) 형태이다. 따라서 키로는 숫자와 문자열 모두 가질 수 있다.

#!syntax javascript
arr[0] = "item1"
arr[1] = "item2"
arr["string"] = "string key"

5. 기타

  • Baekjoon OJ에서 이 언어를 지원한다. awk로 숏코하는 빌런들이 많다 카더라

6. 관련 문서


[1] 개발자들의 이름이다.