Written by
Sunwoo Han
on
on
awk 명령어 사용법
awk
awk
는 파일로부터 레코드(recode)를 선택하고, 선택된 레코드에 포함된 값을 조작하거나 데이터화하는 것을 목적으로 사용하는 명령어이다.
awk 명령으로 할 수 있는 일들은 다음과 같다.
- 텍스트 파일의 전체 내용 출력
- 파일의 특정 필드만 출력
- 특정 필드에 문자열을 추가해서 출력
- 패턴이 포함된 레코드 출력
- 특정 필드에 연산 수행 결과 출력
- 필드 값 비교에 따라 레코드 출력
awk는 기본적으로 입력 데이터를 라인(line)단위의 레코드(Record) 로 인식한다. 각 레코드는 공백 문자(space, tab)로 구분된 필드(Field) 로 분류된다.
기본 문법
$ awk [OPTION] [awk program] [FILENAME]
OPTION | |
---|---|
-F | 필드 구분 문자 지정 |
-f | awk program 파일 경로 지정 |
-v | awk program에서 사용될 특정 variable값 지정 |
awk 명령에는 사용 가능한 옵션이 매우 적다. 따라서 옵션보다 awk program을 작성해서 사용한다.
awk program
awk program의 기본 구조는 아래와 같다.
pattern { action }
그리고 awk program은 ‘‘안에 작성해야 한다. 따라서 다음과 같은 형태가 된다.
$ awk [OPTION] 'pattern { action }' [FILENAME]
자주 사용하는 명령어 예시
awk 사용 예 | |
---|---|
파일의 전체 내용 출력 | awk ‘{ print }’ [FILE] |
필드 값 출력 | awk ‘{ print $1 }’ [FILE] |
필드 값에 임의 문자열을 같이 출력 | awk ‘{ print “EXAM”$1, “EXAM”$2 }’ [FILE] |
지정된 문자열을 포함하는 레코드만 출력 | awk ‘/EXAM/’ [FILE] |
특정 필드 값 비교를 통해 선택된 레코드만 출력 | awk ‘$1 == 10 { print $2 }’ [FILE] |
특정 필드들의 합 구하기 | awk ‘{sum += $3} END { print sum }’ [FILE] |
여러 필드들의 합 구하기 | awk ‘{ for(i = 2; i <= NF; i++) total += $i }; END { print “TOTAL : “ total }’ [FILE] |
레코드 단위로 필드 합 및 평균 값 구하기 | awk ‘{ sum = 0 } { sum += ($3 + $4 + $5) } { print $0, sum, sum / 3 }’ [FILE] |
필드에 연산을 수행한 결과 출력하기 | awk ‘{ print $1, $2, $3 + 2, $4, $5 }’ [FILE] |
레코드 또는 필드의 문자열 길이 검사 | awk ‘length($0) > 20’ [FILE] |
파일에 저장된 awk program 실행 | awk -f [AWK FILE] [FILE] |
필드 구분 문자 변경하기 | awk -F ‘:’ ‘{ print $1 }’ [FILE] |
awk 실행 결과 레코드 정렬하기 | awk ‘{ print $0 }’ [FILE] |
특정 레코드만 출력하기 | awk ‘NR == 2 { print $0; exit }’ [FILE] |
출력 필드 너비 지정하기 | awk ‘{ printf “%-3s %-8s %-4s %-4s %-4s\n”, $1, $2, $3, $4, $5 }’ [FILE] |
필드 중 최대 값 출력 | awk ‘{ max = 0; for(i = 3; i M NF; i++) max = ($i > max) ? $i : max; print max }’ [FILE] |
Reference
Comments
CS 의 다른 글
-
HTTP 헤더 - 캐시와 조건부 요청 03 Jan 2022
-
HTTP 헤더 - 일반 헤더 26 Dec 2021
-
HTTP 상태코드 20 Dec 2021
-
HTTP 메서드 활용 17 Dec 2021
-
HTTP 메서드 12 Dec 2021
-
HTTP 기본 09 Dec 2021
-
URI와 웹 브라우저 요청 흐름 08 Dec 2021
-
인터넷 네트워크 06 Dec 2021
-
Single LinkedList 01 Oct 2021
-
ArrayList 24 Sep 2021
-
List Interface(리스트 인터페이스) 23 Sep 2021
-
자바 컬렉션 프레임워크 20 Sep 2021
-
면접 기초 질문 리스트 31 Aug 2021
-
인프라 기초 총정리 14 Aug 2021
-
하드웨어와 네트워크 기초 지식 03 Aug 2021
-
오버레이 네트워크(Overlay Network) 02 Aug 2021
-
이건 꼭 알고 가자! 면접 출제 빈도가 높은 질문들 19 May 2021
-
1분 자기소개 19 May 2021
-
백엔드 개발자 면접 / 학습내용 15 Feb 2021
-
너비 우선 탐색(breadth-first search, BFS) 22 Oct 2020
-
깊이 우선 탐색(depth-first search, DFS) 10 Oct 2020
-
크리티컬 섹션(Critical Section) 10 Sep 2020
-
삽입 정렬(Insertion Sort) 04 Sep 2020
-
선택 정렬(Selection Sort) 04 Sep 2020
-
거품 정렬(Bubble Sort) 04 Sep 2020
-
LRU 알고리즘 31 Aug 2020
-
Stack, Queue 29 Aug 2020
-
awk 명령어 사용법 24 Aug 2020
-
grep 명령어 사용법 23 Aug 2020
-
DNS의 이해 14 Aug 2020
-
대칭키와 공개키 10 Aug 2020
-
HTTP & HTTPS 10 Aug 2020