[[프로그래밍 언어|'''프로그래밍 언어 {{{#!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> ※ 나무위키에 등재된 프로그래밍 언어 목록 | |||||||
A | ActionScript · Ada · Agda · ALGOL · APL · awk | |||||||
B | BASIC · Befunge · Brainfuck | |||||||
C | C · C# · C++ · Carbon · Chef · Clojure · COBOL · CoffeeScript · Coq · Crystal | |||||||
D | D · Dart | |||||||
E | Elixir · Elm · emojicode · Erlang · ETA | |||||||
F | F# · Forth · Fortran | |||||||
G | GNU Octave · Go · Groovy | |||||||
H | Haskell · HolyC · HQ9+ · HRON | |||||||
I | ||||||||
J | Java · JavaScript · Julia | |||||||
K | Kotlin · Krait | |||||||
L | Lean · LISP · Lua | |||||||
M | Malbolge · MATLAB · Max · Mojo · Moonlight | |||||||
N | Nim · Nix | |||||||
O | Oberon · Objective-C · OCaml · Ook! | |||||||
P | Pascal · Perl · PHP · Processing · Prolog · Python | |||||||
Q | Q# | |||||||
R | R · Racket · Raku · ReasonML · Ruby · Rust | |||||||
S | Scala · Scheme · Scratch · sed · Shakespeare · Shell Script · Smalltalk · Swift | |||||||
T | TypeScript | |||||||
U | Udon | |||||||
V | Visual Basic · Visual Basic .NET · Visual Basic for Applications · vvvv | |||||||
W | Wave · Whitespace | |||||||
X | ||||||||
Y | ||||||||
Z | ZenScript · 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. 개요
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] 개발자들의 이름이다.