Top 32 리눅스 Awk All Answers

You are looking for information, articles, knowledge about the topic nail salons open on sunday near me 리눅스 awk on Google, you do not find the information you need! Here are the best content compiled and compiled by the https://toplist.maxfit.vn team, along with other related topics such as: 리눅스 awk 리눅스 awk 문자열 자르기, 리눅스 awk 옵션, 리눅스 awk grep, Awk 특정 문자열 추출, awk f옵션, 쉘스크립트 awk 변수 사용, Awk 옵션, 리눅스 awk NF


리눅스 기초 강좌 – 명령어 100 cut 필드별로 자르기 awk
리눅스 기초 강좌 – 명령어 100 cut 필드별로 자르기 awk


리눅스 awk 명령어 사용법. (Linux awk command) – 리눅스 파일 텍스트 데이터 검사, 조작, 출력. :: 개발자를 위한 레시피

  • Article author: recipes4dev.tistory.com
  • Reviews from users: 28665 ⭐ Ratings
  • Top rated: 3.4 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 리눅스 awk 명령어 사용법. (Linux awk command) – 리눅스 파일 텍스트 데이터 검사, 조작, 출력. :: 개발자를 위한 레시피 awk는 파일로부터 레코드(record)를 선택하고, 선택된 레코드에 포함된 값을 조작하거나 데이터화하는 것을 목적으로 사용하는 프로그램입니다. 즉, awk … …
  • Most searched keywords: Whether you are looking for 리눅스 awk 명령어 사용법. (Linux awk command) – 리눅스 파일 텍스트 데이터 검사, 조작, 출력. :: 개발자를 위한 레시피 awk는 파일로부터 레코드(record)를 선택하고, 선택된 레코드에 포함된 값을 조작하거나 데이터화하는 것을 목적으로 사용하는 프로그램입니다. 즉, awk … 1. awk 명령어. 대부분의 리눅스 명령들이, 그 명령의 이름만으로 대략적인 기능이 예상되는 것과 다르게, awk 명령은 이름에 그 기능을 의미하는 단어나 약어가 포함되어 있지 않습니다. awk는 최초에 awk 기능을..programming, develop, software, android, iOS, linux, java, kotlin, c, cpp, web, spring
  • Table of Contents:

리눅스 awk 명령어 사용법 (Linux awk command) – 리눅스 파일 텍스트 데이터 검사 조작 출력

티스토리툴바

리눅스 awk 명령어 사용법. (Linux awk command) - 리눅스 파일 텍스트 데이터 검사, 조작, 출력. :: 개발자를 위한 레시피
리눅스 awk 명령어 사용법. (Linux awk command) – 리눅스 파일 텍스트 데이터 검사, 조작, 출력. :: 개발자를 위한 레시피

Read More

REAKWON :: [리눅스] awk 명령어 사용법과 여러가지 실용적인 예제 모음

  • Article author: reakwon.tistory.com
  • Reviews from users: 23969 ⭐ Ratings
  • Top rated: 4.6 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about REAKWON :: [리눅스] awk 명령어 사용법과 여러가지 실용적인 예제 모음 AWK(Aho Weinberger Kernighan). 리눅스의 어떤 다른 명령어보다 명령어 이름이 매우 직관적이지 않은 명령어입니다. 이 명령어를 개발한 사람들의 … …
  • Most searched keywords: Whether you are looking for REAKWON :: [리눅스] awk 명령어 사용법과 여러가지 실용적인 예제 모음 AWK(Aho Weinberger Kernighan). 리눅스의 어떤 다른 명령어보다 명령어 이름이 매우 직관적이지 않은 명령어입니다. 이 명령어를 개발한 사람들의 … AWK(Aho Weinberger Kernighan) 리눅스의 어떤 다른 명령어보다 명령어 이름이 매우 직관적이지 않은 명령어입니다. 이 명령어를 개발한 사람들의 이름 약자(Aho  Weinberger Kernighan)이기 때문에 mkdir(make d..
  • Table of Contents:
[리눅스] awk 명령어 사용법과 여러가지 실용적인 예제 모음

AWK(Aho Weinberger Kernighan)

티스토리툴바

REAKWON :: [리눅스] awk 명령어 사용법과 여러가지 실용적인 예제 모음
REAKWON :: [리눅스] awk 명령어 사용법과 여러가지 실용적인 예제 모음

Read More

[리눅스/유닉스] AWK 명령어 기본적인 사용문법 – NF/NR 그리고 패턴과액션

  • Article author: jhnyang.tistory.com
  • Reviews from users: 29430 ⭐ Ratings
  • Top rated: 4.1 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [리눅스/유닉스] AWK 명령어 기본적인 사용문법 – NF/NR 그리고 패턴과액션 오늘은 리눅스에서 자주 사용되는 명령어 중 하나인, awk에 대해 작성 … awk는 데이터를 내가 원하는 포맷대로 쉽게 가공할 수 있도록 도와주는 … …
  • Most searched keywords: Whether you are looking for [리눅스/유닉스] AWK 명령어 기본적인 사용문법 – NF/NR 그리고 패턴과액션 오늘은 리눅스에서 자주 사용되는 명령어 중 하나인, awk에 대해 작성 … awk는 데이터를 내가 원하는 포맷대로 쉽게 가공할 수 있도록 도와주는 … [리눅스/유닉스 완전정복 목차] 안녕하세요~~ 오늘은 리눅스에서 자주 사용되는 명령어 중 하나인, awk에 대해 작성해보려고 해요. ㅎㅎ awk란 무엇인가 명령어 cut은 자르다라는 의미, 명령어 sed도 Streamlined..
  • Table of Contents:
[리눅스유닉스 완전정복 목차]

awk란 무엇인가

필드와 레코드 NF와 NR

awk의 기본적인 문법

awk 명령어 사용 예시

태그

‘별걸다하는 IT리눅스 유닉스’ Related Articles

티스토리툴바

[리눅스/유닉스] AWK 명령어 기본적인 사용문법 - NF/NR 그리고 패턴과액션
[리눅스/유닉스] AWK 명령어 기본적인 사용문법 – NF/NR 그리고 패턴과액션

Read More

리눅스 awk 사용법 · 어쩐지 오늘은

  • Article author: zzsza.github.io
  • Reviews from users: 24277 ⭐ Ratings
  • Top rated: 4.0 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 리눅스 awk 사용법 · 어쩐지 오늘은 awk awk : 데이터를 조작하고 리포트를 생성하기 위해 사용하는 언어입니다. 리눅스에서 사용하는 awk는 GNU 버전의 gawk로 심볼릭 링크되어 있습니다 … …
  • Most searched keywords: Whether you are looking for 리눅스 awk 사용법 · 어쩐지 오늘은 awk awk : 데이터를 조작하고 리포트를 생성하기 위해 사용하는 언어입니다. 리눅스에서 사용하는 awk는 GNU 버전의 gawk로 심볼릭 링크되어 있습니다 … awk awk : 데이터를 조작하고 리포트를 생성하기 위해 사용하는 언어입니다. 리눅스에서 사용하는 awk는 GNU 버전의 gawk로 심볼릭 링크되어 있습니다 간단한 연산자를 명령라인에서 사용할 수 있으며, 큰 프로그램을 위해 사용될 수 있습니다. awk는 데이터를 조작할 수 있기 때문에 쉘 스크립트에서 사용되는 필수 툴이며, 작은 데이터베이스를 관리하기 위해서도 필수입니다 Alfred Aho, Peter…
  • Table of Contents:

awk

awk 프로그래밍 형식

awk와 정규표현식

비교 표현식

awk 변수

awk 리다이렉션

Share this post

About

Related Posts

Comments

리눅스 awk 사용법 · 어쩐지 오늘은
리눅스 awk 사용법 · 어쩐지 오늘은

Read More

[Linux] 리눅스 사용자를 위한 awk 명령어의 사용법 (주요 사용 용도 : 텍스트 데이터 처리) – 해솔 | 해처럼 밝고 소나무처럼 바르게

  • Article author: shlee1990.tistory.com
  • Reviews from users: 12334 ⭐ Ratings
  • Top rated: 4.2 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [Linux] 리눅스 사용자를 위한 awk 명령어의 사용법 (주요 사용 용도 : 텍스트 데이터 처리) – 해솔 | 해처럼 밝고 소나무처럼 바르게 Awk는 리눅스 (Linux)에서 텍스트 처리를 위한 프로그래밍 언어입니다. 표준 입력 (stdin) 또는 하나 이상의 파일에서 ​데이터를 가져올 수 있습니다. …
  • Most searched keywords: Whether you are looking for [Linux] 리눅스 사용자를 위한 awk 명령어의 사용법 (주요 사용 용도 : 텍스트 데이터 처리) – 해솔 | 해처럼 밝고 소나무처럼 바르게 Awk는 리눅스 (Linux)에서 텍스트 처리를 위한 프로그래밍 언어입니다. 표준 입력 (stdin) 또는 하나 이상의 파일에서 ​데이터를 가져올 수 있습니다. 정보 업무명  : 리눅스에서 awk 명령어를 사용하는 기초적인 방법 정리 작성자  : 박진만 작성일  : 2020-03-14 설  명 : 수정이력 :  내용 [특징] 리눅스에서 awk 명령어 사용방법 소개 [활용 자료] 없음 [..
  • Table of Contents:
[Linux] 리눅스 사용자를 위한 awk 명령어의 사용법 (주요 사용 용도 : 텍스트 데이터 처리) - 해솔 | 해처럼 밝고 소나무처럼 바르게
[Linux] 리눅스 사용자를 위한 awk 명령어의 사용법 (주요 사용 용도 : 텍스트 데이터 처리) – 해솔 | 해처럼 밝고 소나무처럼 바르게

Read More

[LINUX] 📚 awk 명령어 문법 마스터 💯 총정리

  • Article author: inpa.tistory.com
  • Reviews from users: 17598 ⭐ Ratings
  • Top rated: 3.4 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [LINUX] 📚 awk 명령어 문법 마스터 💯 총정리 정리하자면, awk는 명령의 입력으로 지정된 파일로부터 데이터를 분류한 다음, 분류된 텍스트 데이터를 바탕으로 패턴 매칭 여부를 검사하거나 데이터 … …
  • Most searched keywords: Whether you are looking for [LINUX] 📚 awk 명령어 문법 마스터 💯 총정리 정리하자면, awk는 명령의 입력으로 지정된 파일로부터 데이터를 분류한 다음, 분류된 텍스트 데이터를 바탕으로 패턴 매칭 여부를 검사하거나 데이터 … AWK (Aho Weinberger Kernighan) 개념 AWK는 텍스트가 저장되어 있는 파일을 원하는 대로 필터링하거나 추가해주거나 기타 가공을 통해서 나온 결과를 행과 열로 출력해주는 프로그램 이다. 좀더 쉽게 말하자면,..
  • Table of Contents:

AWK (Aho Weinberger Kernighan) 개념

AWK 명령어 문법

AWK 명령 사용 예제

방문해 주셔서 감사드립니다

공지사항

최근 댓글 new

최근 글 new

인기 글 hot

티스토리툴바

[LINUX] 📚 awk 명령어 문법 마스터 💯 총정리
[LINUX] 📚 awk 명령어 문법 마스터 💯 총정리

Read More

[Linux] 리눅스 awk를 사용하여 원하는 칼럼만 출력하기

  • Article author: jesc1249.tistory.com
  • Reviews from users: 16005 ⭐ Ratings
  • Top rated: 4.0 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [Linux] 리눅스 awk를 사용하여 원하는 칼럼만 출력하기 awk는 패턴 검색 및 처리를 목적으로 텍스트 형태로 되어있는 데이터를 필드로 구분하여 처리하는 스크립트 언어다. 1. command awk [옵션] [파일명] … …
  • Most searched keywords: Whether you are looking for [Linux] 리눅스 awk를 사용하여 원하는 칼럼만 출력하기 awk는 패턴 검색 및 처리를 목적으로 텍스트 형태로 되어있는 데이터를 필드로 구분하여 처리하는 스크립트 언어다. 1. command awk [옵션] [파일명] … awk는 패턴 검색 및 처리를 목적으로 텍스트 형태로 되어있는 데이터를 필드로 구분하여 처리하는 스크립트 언어다. 1. command awk [옵션] [파일명] [출력 명령] | awk [옵션] 2. 옵션 특정 문구가 포함된 줄..현재 네트워크 엔지니어 & 개발자로 성능시험과 인증업무, 네트워크 장비 개발, 트러블슈팅, QA 업무를 수행하고 있다.
    도보 여행을 좋아하여 국내의 다양한 길들을 도전해보고 있다.
  • Table of Contents:
[Linux] 리눅스 awk를 사용하여 원하는 칼럼만 출력하기
[Linux] 리눅스 awk를 사용하여 원하는 칼럼만 출력하기

Read More

linux awk 사용법과 예제 설명

  • Article author: muabow.tistory.com
  • Reviews from users: 2629 ⭐ Ratings
  • Top rated: 3.3 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about linux awk 사용법과 예제 설명 awk는 패턴 처리 명령어로 직접 사용자로부터 입력을 받거나 지정한 파일을 가공하여 표준 출력한다. – 표준 출력을 리다이렉션 할 수 있다. …
  • Most searched keywords: Whether you are looking for linux awk 사용법과 예제 설명 awk는 패턴 처리 명령어로 직접 사용자로부터 입력을 받거나 지정한 파일을 가공하여 표준 출력한다. – 표준 출력을 리다이렉션 할 수 있다. awk(오크; Aho Weinberger Kernighan)  – awk의 기본 기능은 텍스트 형태로 되어있는 입력 데이터를 행과 단어 별로 처리해 출력하는 것 1. 사용법  Usage: awk [POSIX or GNU style options] -f progfile [–]..
  • Table of Contents:

awk(오크; Aho Weinberger Kernighan)

태그

관련글

댓글0

공지사항

최근글

인기글

최근댓글

태그

전체 방문자

티스토리툴바

linux awk 사용법과 예제 설명
linux awk 사용법과 예제 설명

Read More

코딩트리

  • Article author: veneas.tistory.com
  • Reviews from users: 39576 ⭐ Ratings
  • Top rated: 3.5 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 코딩트리 목차 1. awk 명령어 1. awk program 파일로부터 awk program을 실행 # awk [options] -f awkProgramFile file … 2. awk program 파일 없이 awk … …
  • Most searched keywords: Whether you are looking for 코딩트리 목차 1. awk 명령어 1. awk program 파일로부터 awk program을 실행 # awk [options] -f awkProgramFile file … 2. awk program 파일 없이 awk … 목차 1. awk 명령어 1. awk program 파일로부터 awk program을 실행 # awk [options] -f awkProgramFile file … 2. awk program 파일 없이 awk program을 실행 awkProgram = ‘Patterns {Actions}’ # awk [option..
  • Table of Contents:

네비게이션

[Linux] 리눅스 파일의 원하는 행과 열 출력 – awk

1 awk 명령어

2 awk 예제

사이드바

검색

티스토리툴바

코딩트리
코딩트리

Read More

[리눅스 명령어] awk 사용법 – WONIZZ.LOG / awk command

  • Article author: blog.wonizz.tk
  • Reviews from users: 32429 ⭐ Ratings
  • Top rated: 4.0 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [리눅스 명령어] awk 사용법 – WONIZZ.LOG / awk command awk 란 패턴 탐색과 처리를 위한 명령어로 간단하게 파일에서 결과를 추려내고 가공하여 원하는 결과물을 만들어내는 유틸리티입니다. …
  • Most searched keywords: Whether you are looking for [리눅스 명령어] awk 사용법 – WONIZZ.LOG / awk command awk 란 패턴 탐색과 처리를 위한 명령어로 간단하게 파일에서 결과를 추려내고 가공하여 원하는 결과물을 만들어내는 유틸리티입니다. awk 란 패턴 탐색과 처리를 위한 명령어로 간단하게 파일에서 결과를 추려내고 가공하여 원하는 결과물을 만들어내는 유틸리티입니다. 이 명령은 사용자가 정의한 명령어 집합을 이용하여 파일 집합과 사용자가 제공한 확장 표현식을 적용합니다.
  • Table of Contents:

1 awk 명령어란

2 awk 기본 명령어

3 awk 사용예제

4 마치며…

Published by 워니

글 내비게이션

보관함

최신 댓글

이메일로 블로그 구독하기

[리눅스 명령어] awk 사용법 - WONIZZ.LOG / awk command
[리눅스 명령어] awk 사용법 – WONIZZ.LOG / awk command

Read More


See more articles in the same category here: 180+ tips for you.

리눅스 awk 명령어 사용법. (Linux awk command) – 리눅스 파일 텍스트 데이터 검사, 조작, 출력.

1. awk 명령어.

대부분의 리눅스 명령들이, 그 명령의 이름만으로 대략적인 기능이 예상되는 것과 다르게, awk 명령은 이름에 그 기능을 의미하는 단어나 약어가 포함되어 있지 않습니다. awk는 최초에 awk 기능을 디자인한 사람들의 이니셜을 조합하여 만든 이름이기 때문입니다. Aho + Weinberger + Kernighan. (A:Alfred V. Aho, W:Peter J. Weinberger, K:Brian W. Kernighan)

awk는 파일로부터 레코드(record)를 선택하고, 선택된 레코드에 포함된 값을 조작하거나 데이터화하는 것을 목적으로 사용하는 프로그램입니다. 즉, awk 명령의 입력으로 지정된 파일로부터 데이터를 분류한 다음, 분류된 텍스트 데이터를 바탕으로 패턴 매칭 여부를 검사하거나 데이터 조작 및 연산 등의 액션을 수행하고, 그 결과를 출력하는 기능을 수행합니다.

awk에 대한 설명이 잘 이해되시나요? 패턴, 분류, 텍스트, 조작, 연산, 액션. 뭔가 복잡한 작업을 하는 프로그램인 것은 맞는 것 같은데, 구체적으로 어떤 기능을 수행하는지, 어떤 목적을 위해 사용해야 하는지 쉽게 떠오르지 않네요. awk를 어떻게 사용해야 하는지도…

자, 그러면, 구체적인 동작 방식과 사용법을 알아보기에 앞서, awk 명령으로 할 수 있는 일들을 간단히 나열해 보겠습니다.

텍스트 파일의 전체 내용 출력.

파일의 특정 필드만 출력.

특정 필드에 문자열을 추가해서 출력.

패턴이 포함된 레코드 출력.

특정 필드에 연산 수행 결과 출력.

필드 값 비교에 따라 레코드 출력.

awk로 할 수 있는 작업 중에서, 가장 단순하고 기본적인 몇 개의 예제만 소개해봤는데, awk 명령의 사용 목적이 조금은 이해되시나요? awk 명령에 대한 설명과 소개된 예제를 보면 awk가 어떻게 동작하는지 어느 정도 감을 잡으셨을거라 생각합니다.

awk의 기본 동작 방식 자체는 매우 단순합니다. 입력 데이터로부터 주어진 패턴을 포함하는 라인을 찾기 위해 파일의 내용을 탐색한 다음, 패턴에 일치하는 라인이 발견되면 해당 라인에 대해 지정된 액션을 실행합니다. 그리고 이 과정을 입력 파일의 끝을 만날 때까지 수행합니다. 개념은 단순하죠? 하지만 실질적인 사용법은 꽤 복잡합니다. 이유는 바로, awk가 실행하는 기능(패턴 매칭과 액션 실행) 들이 “프로그래밍 언어”로 작성되기 때문입니다.

awk는 “awk programming language”라는 프로그래밍 언어로 작성된 프로그램을 실행합니다. 리눅스에서 쉘 스크립트(Shell Script)로 작성된 파일이 리눅스 쉘(Shell)에 의해 실행되는 것을 떠올리면, awk가 “awk programming language” 문법으로 작성된 코드를 실행한다는 것의 의미가 쉽게 이해되죠.

awk는 기본적으로 입력 데이터를 라인(line) 단위의 레코드(Record)로 인식합니다. 그리고 각 레코드에 들어 있는 텍스트는 공백 문자(space, tab)로 구분된 필드(Field)들로 분류되는데요. 이렇게 식별된 레코드 및 필드의 값들은 awk 프로그램에 의해 패턴 매칭 및 다양한 액션의 파라미터로 사용됩니다. (참고로, 레코드 구분 문자(newline)와 필드 구분 문자(space, tab)는 awk 프로그램 옵션으로 변경할 수 있습니다.)

2. awk 명령어 옵션.

awk 명령의 기본 형식과 옵션은 아래와 같습니다.

awk [OPTION…] [awk program] [ARGUMENT…] OPTION -F : 필드 구분 문자 지정. -f : awk program 파일 경로 지정. -v : awk program에서 사용될 특정 variable값 지정. awk program -f 옵션이 사용되지 않은 경우, awk가 실행할 awk program 코드 지정. ARGUMENT 입력 파일 지정 또는 variable 값 지정.

2.1 awk program.

awk 명령의 기본 형식을 보면 알겠지만, awk 명령에는 사용 가능한 옵션이 몇 개 없습니다. 대신, awk 사용자는 옵션의 사용보다는, awk program의 작성에 거의 대부분의 수고를 들이게 되는데요, 앞서 간단히 언급했듯이, awk program은 스크립트 형식의 프로그래밍 언어로 작성되기 때문에, 작성 방법이 매우 다양합니다.

하지만 awk program의 기본 구조는 아래와 같습니다.

pattern { action }

그리고 awk 명령에서 awk program은 ‘ ‘(single quotation marks) 안에 작성합니다. 풀어서 써보면 아래 형태가 되겠죠.

awk [OPTION…] ‘pattern { action }’ [ARGUMENT…]

pattern과 action은 모두 생략이 가능한데, pattern을 생략하는 경우는 “모든 레코드”가 적용되고, action을 생략하면 “print”가 적용됩니다. 즉, 아래와 같이 pattern이 생략되는 경우, 매칭 여부를 검사할 문자열 패턴 정보가 없기 때문에 모든 레코드가 선택되고, action을 생략하면, 기본 액션인 print가 실행되는 것입니다.

# pattern 생략. $ awk ‘ { print } ‘ ./file.txt # file.txt의 모든 레코드 출력. # action 생략. $ awk ‘ /p/ ‘ ./file.txt # file.txt에서 p를 포함하는 레코드 출력.

pattern과 action에 작성되는 awk program 코드에는 다양한 표현식, 변수, 함수 등이 사용됩니다. 이 중 가장 중요한 변수는 레코드와 필드를 나타내는 변수인데, 하나의 레코드는 $0, 레코드에 포함된 각 필드는 그 순서대로 $1, $2, …, $n 으로 지칭됩니다.

아래 예제는 레코드의 길이가 10 이상인 경우, 세 번째($3), 네 번째($4), 다섯 번째($5) 필드를 출력하는 예제입니다.

$ awk ‘ length($0) > 10 { print $3, $4, $5} ‘ ./file.txt

그리고 패턴 중에 “BEGIN” 과 “END” 라고 하는 특별한 패턴이 존재하는데요, awk가 BEGIN 패턴을 식별하면 입력 데이터로부터 첫 번째 레코드를 처리하기 전에 “BEGIN”에 지정된 액션을 실행합니다. 그리고 “END” 패턴은 “BEGIN”과 반대로, 모든 레코드를 처리한 다음 “END”에 지정된 액션을 실행합니다.

아래 예제는 “BEGIN”과 “END” 패턴의 사용 예제를 보여줍니다.

$ awk ‘ BEGIN { print “TITLE : Field value 1,2”} {print $1, $2} END {print “Finished”} ‘ file.txt

일단, awk program 을 이해하는데 있어서 가장 기본이 되는 내용들에 대해서만 정리를 했는데요, 이 외에도 awk program에는 많은 수의 표현식과 변수, 함수 등이 제공됩니다. 이 모든 것을 본문에 정리하기는 쉽지 않기 때문에, 본문의 [4. awk program language]에서, 대충 어떤 것들이 있는지만 나열하겠습니다. 좀 더 자세한 내용들에 대해서는 [5. 참고]에 링크된 사이트에서 확인하실 수 있습니다.

3. awk 명령 사용 예제.

앞에서도 설명했듯이, awk 명령은 아래와 같은 형식으로 사용할 수 있습니다.

awk [OPTION…] [pattern {action} …] [ARGUMENT…]

아래 표는 awk 명령 사용 예제를 정리한 것입니다. 각 항목의 링크를 선택하면, 좀 더 자세한 설명과 사용 예제를 확인할 수 있습니다.

3.1 파일의 전체 내용 출력.

awk 파일에 “print” 액션만 지정한 경우, 입력으로 지정된 파일의 내용을 출력합니다.

$ awk ‘{ print }’ ./file.txt > file.txt의 전체 파일 내용 출력.

$ cat file.txt 1 ppotta 30 40 50 2 soft 60 70 80 3 prog 90 10 20 $ awk ‘ { print } ‘ ./file.txt 1 ppotta 30 40 50 2 soft 60 70 80 3 prog 90 10 20

3.2 필드 값 출력.

“print $n” 액션을 통해 n번째 필드 값을 출력할 수 있습니다. 참고로, “$0″은 전체 레코드를 나타내는 변수입니다.

$ awk ‘{ print $2 }’ ./file.txt > 두 번째 필드 값 출력. $ awk ‘{ print $1,$2 }’ ./file.txt > 첫 번째, 두 번째 필드 값 출력. $ awk ‘{ print $0}’ ./file.txt > 레코드 출력.

$ cat file.txt 1 ppotta 30 40 50 2 soft 60 70 80 3 prog 90 10 20 $ awk ‘ { print $1, $2} ‘ ./file.txt 1 ppotta 2 soft 3 prog

3.3 필드 값에 임의 문자열을 같이 출력.

awk ‘{print “no:”$1, “user:”$2}’ ./file.txt

$ cat file.txt 1 ppotta 30 40 50 2 soft 60 70 80 3 prog 90 10 20 $ awk ‘ {print “no:”$1, “user:”$2} ‘ ./file.txt no:1 user:ppotta no:2 user:soft no:3 user:prog

3.4 지정된 문자열을 포함하는 레코드만 출력.

awk의 패턴에 정규 표현식(Regular Expression)을 사용하여 문자열 패턴을 검사할 수 있습니다. 이 때, 정규 표현식은 “/regex/” 형태로 지정할 수 있습니다.

awk ‘/pp/’ ./file.txt # “pp” 가 포함된 레코드만 유효. awk ‘/[2-3]0/’ ./file.txt # 20, 30 이 포함된 레코드만 유효.

$ cat file.txt 1 ppotta 30 40 50 2 soft 60 70 80 3 prog 90 10 20 $ awk ‘ /pp/ ‘ ./file.txt 1 ppotta 30 40 50 $ awk ‘ /[2-3]0/ ‘ ./file.txt 1 ppotta 30 40 50 3 prog 90 10 20

3.5 특정 필드 값 비교를 통해 선택된 레코드만 출력.

awk program language의 표현식을 사용하여, 유효한 레코드를 위한 필드 값을 비교할 수 있습니다.

awk ‘$1 == 2 { print $2 }’ ./file.txt # 첫 번째 필드가 2인 레코드의 두 번째 필드 출력. awk ‘$3 > 70 { print $0 }’ ./file.txt # 세 번째 필드가 70보다 큰 레코드 출력. awk ‘$3 == 30 && $4 ==40 { print $2 }’ file.txt # 세 번째 필드가 30이고 네 번째 필드가 40인 레코드의 두 번째 필드 출력.

$ cat file.txt 1 ppotta 30 40 50 2 soft 60 70 80 3 prog 90 10 20 $ awk ‘ $1 == 2 { print $2 } ‘ ./file.txt soft $ awk ‘ $3 > 70 { print $0 } ‘ ./file.txt 3 prog 90 10 20 $ awk ‘ $3 == 30 && $4 ==40 { print $2 } ‘ file.txt ppotta

3.6 지정된 필드의 값을 더한 값 출력. (특정 필드에 대한 합 구하기)

awk program에서 변수의 사용을 통해 특정 필드의 값을 더하고, 더해진 총 합을 출력할 수 있습니다. 이 때, 총합은 모든 레코드 탐색이 끝난 시점인, “END” 패턴의 액션에서 실행합니다.

awk ‘{sum += $3} END { print sum }’ ./file.txt

$ cat file.txt 1 ppotta 30 40 50 2 soft 60 70 80 3 prog 90 10 20 $ awk ‘ {sum += $3} END { print “SUM : “sum } ‘ ./file.txt SUM : 180

3.7 여러 필드의 값을 더한 값 출력. (여러 필드에 대한 합 구하기)

for 루프를 수행하여 여러 필드의 값을 연산에 포함시킬 수 있습니다. 참고로 아래 예제에서 “NF”는 현재 레코드의 필드 갯수를 뜻하며, “$i”는 변수 i가 매핑된 필드를 뜻합니다. (i=2일 때 $2)

awk ‘{ for (i=2; i<=NF; i++) total += $i }; END { print "TOTAL : "total }' ./file.txt $ cat file.txt 1 ppotta 30 40 50 2 soft 60 70 80 3 prog 90 10 20 $ awk ' { for (i=2; i<=NF; i++) total += $i }; END { print "TOTAL : "total } ' ./file.txt TOTAL : 450 3.8 레코드 단위로 필드 합 및 평균 값 구하기. 변수 및 액션을 조합하여 레코드 단위로 필드들의 값 및 평균을 계산하여 출력할 수 있습니다. awk '{ sum = 0 } {sum += ($3+$4+$5) } { print $0, sum, sum/3 }' ./file.txt $ cat file.txt 1 ppotta 30 40 50 2 soft 60 70 80 3 prog 90 10 20 $ awk ' { sum = 0 } {sum += ($3+$4+$5) } { print $0, sum, sum/3 } ' ./file.txt 1 ppotta 30 40 50 120 40 2 soft 60 70 80 210 70 3 prog 90 10 20 120 40 3.9 필드에 연산을 수행한 결과 출력하기. awk program 표현식을 사용하여, 필드에 연산을 수행한 결과를 출력할 수 있습니다. awk '{print $1, $2, $3+2, $4, $5}' ./file.txt # 세 번째 필드에 2를 더한 값을 출력. $ cat file.txt 1 ppotta 30 40 50 2 soft 60 70 80 3 prog 90 10 20 $ awk ' {print $1, $2, $3+2, $4, $5} ' ./file.txt 1 ppotta 32 40 50 2 soft 62 70 80 3 prog 92 10 20 3.10 레코드 또는 필드의 문자열 길이 검사. length() 함수를 사용해 레코드 또는 필드의 문자열 길이를 확인할 수 있습니다. awk ' length($0) > 20′ ./file.txt # 레코드의 길이가 20보다 큰 경우. awk ‘ length($2) > 4 { print $0 } ‘ ./file.txt # 두 번째 필드의 길이가 4보다 큰 레코드 출력.

$ cat file.txt 1 ppotta 30 40 50 2 soft 60 70 80 3 prog 90 10 20 $ awk ‘ length($2) > 4 { print $0 } ‘ ./file.txt 1 ppotta 30 40 50

3.11 파일에 저장된 awk program 실행.

awk 실행 시, “-f” 옵션을 사용하여 파일로부터 awk program을 실행할 수 있습니다.

awk -f awkp.script ./file.txt # awkp.script에 저장된 awk program 실행

$ cat file.txt 1 ppotta 30 40 50 2 soft 60 70 80 3 prog 90 10 20 $ cat awkp.script { for (i=2; i<=NF; i++) total += $i } END { print "TOTAL : "total } $ awk -f awkp.script ./file.txt TOTAL : 450 3.12 필드 구분 문자 변경하기. 기본적으로 레코드의 필드를 구분하는 문자는 space 입니다. 이를 "-F" 사용하여 변경할 수 있습니다. awk -F ':' '{ print $1 }' ./file.txt # 필드 구분 문자를 : 로 변경. awk -F ',' '{ print $1 }' ./file.txt # 필드 구분 문자를 , 로 변경. $ cat file2.txt 1, ppotta, 30, 40, 50 2, soft, 60, 70, 80 3, prog, 90, 10, 20 $ awk -F ' , ' ' { print $1 } ' ./file2.txt 1 2 3 3.13 awk 실행 결과 레코드 정렬하기. awk 명령과 sort 명령을 조합하여, awk 실행 결과로 출력되는 레코드를 정렬할 수 있습니다. awk '{ print $0 }' file.txt | sort # 출력 레코드를 오름차순으로 정렬. awk '{ print $0 }' file.txt | sort -r # 출력 레코드를 역순으로 정렬. $ cat file.txt 1 ppotta 30 40 50 2 soft 60 70 80 3 prog 90 10 20 $ awk ' { print $0 } ' file.txt | sort -r 3 prog 90 10 20 2 soft 60 70 80 1 ppotta 30 40 50 3.14 특정 레코드만 출력하기. exit 키워드를 사용하여, 조건에 따라 awk 실행을 중지시킬 수 있습니다. awk '{ print $0; exit }' file.txt # 첫 번째 레코드만 출력하고 실행 중지. awk 'NR == 2 { print $0; exit }' file.txt # 두 번째 레코드만 출력하고 실행 중지. $ cat file.txt 1 ppotta 30 40 50 2 soft 60 70 80 3 prog 90 10 20 $ awk ' NR == 2 { print $0; exit } ' file.txt 2 soft 60 70 80 3.15 출력 필드 너비 지정하기. printf 함수를 사용하여 필드 값 출력 포맷을 지정할 수 있습니다. printf 함수에 사용하는 출력 포맷은 C 언어와 동일합니다. awk '{ printf "%-3s %-8s %-4s %-4s %-4s ", $1, $2, $3, $4, $5}' file.txt $ cat file.txt 1 ppotta 30 40 50 2 soft 60 70 80 3 prog 90 10 20 $ awk ' { printf "%-3s %-8s %-4s %-4s %-4s ", $1, $2, $3, $4, $5} ' file.txt 1 ppotta 30 40 50 2 soft 60 70 80 3 prog 90 10 20 3.16 필드 중 최대 값 출력. 아래와 같은 코드를 통해 레코드 내 필드의 최대 값을 구하여 출력할 수 있습니다. awk '{max = 0; for (i=3; i<=NF; i++) max = ($i > max) ? $i : max ; print max}’ ./file.txt

$ cat file.txt 1 ppotta 30 40 50 2 soft 60 70 80 3 prog 90 10 20 $ awk ‘ {max = 0; for (i=3; i<=NF; i++) max = ($i > max) ? $i : max ; print max} ‘ ./file.txt 50 80 90

4. awk program language

awk program 이 프로그래밍 언어로 작성되는 만큼 다양한 요소들을 사용하여 프로그래밍됩니다.

먼저 awk 표현식은 C 프로그래밍 언어 표현식과 유사한 형태로 제공됩니다.

(E), $n, ++E, –E, E++, E–, E^E, !E, +E, -E, E*E, E/E, E%E, E+E, E-E, E E, EE, E>=E, E~E, E!-E, E in array, (n) in array, E&&E, E||E, E1?E2:E3 V^=E, V%=E, V*=E, V/=E, V+=E, V-=E, V=E

awk program에는 아래와 같은 키워드가 제공됩니다.

BEGIN delete END function in printf break do exit getline next return continue else for if print while

awk program 에서는 새로운 변수를 선언하고 값을 할당하거나 참조할 수 있습니다. 그리고 아래와 같이 특수 목적으로 미리 정의된 변수들을 사용할 수 있습니다.

ARGC : ARGV 배열 요소의 갯수. ARGV : command line argument에 대한 배열. CONVFMT : 문자열을 숫자로 변경할 때 사용할 형식. (ex, “%.6g”) ENVIRON : 환경변수에 대한 배열. FILENAME : 경로를 포함한 입력 파일 이름. FNR : 현재 파일에서 현재 레코드의 순서 값. FS : 필드 구분 문자. (기본 값 = space) NF : 현재 레코드에 있는 필드의 갯수. NR : 입력 시작 점에서 현재 레코드의 순서 값. OFMT : 문자열을 출력할 때 사용할 형식. OFS : 결과 출력 시 필드 구분 문자. (기본 값 = space) ORS : 결과 출력 시 레코드 구분 문자. (기본 값 = newline) RLENGTH : match 함수에 의해 매칭된 문자열의 길이. RS : 레코드 구분 문자. (기본 값 = newline) RSTART : match 함수에 의해 매칭된 문자열의 시작 위치.

awk program 에서 사용할 수 있는 함수들에는 아래와 같은 것들이 있습니다.

Arithmetic Functions : atan2(y,x), cos(x), sin(x), exp(x), log(x), sqrt(x), int(x), rand(), srand([expr]) String Functions : gsub(ere, repl[, in]), index(s, t), length[([s])], match(s, ere), split(s, a[, fs ]), sprintf(fmt, expr, expr, …), sub(ere, repl[, in ]), substr(s, m[, n ]), tolower(s), toupper(s) Input/Output and General Functions : close(expression), getline getline var system(expression)

5. 참고.

.END.

REAKWON :: [리눅스] awk 명령어 사용법과 여러가지 실용적인 예제 모음

AWK(Aho Weinberger Kernighan)

리눅스의 어떤 다른 명령어보다 명령어 이름이 매우 직관적이지 않은 명령어입니다. 이 명령어를 개발한 사람들의 이름 약자(Aho Weinberger Kernighan)이기 때문에 mkdir(make directory), rm(remove) 같은 의미를 축약하여 만든 명령어와는 명령어 이름이 좀 그렇습니다. 이 명령어를 읽을때는 주로 오크라고 읽습니다. AWK는 유닉스에서 개발된 스크립트 언어로 텍스트가 저장되어 있는 파일을 원하는 대로 필터링하거나 추가해주거나 기타 가공을 통해서 나온 결과를 행과 열로 출력해주는 프로그램입니다. 엄청나게 막강하고 다양한 기능을 담고 있기 때문에 여기서는 어떻게 사용하는지에 대해서만 알아보도록 하겠습니다.

그 전에 간단하게 기본 용어만 짚고 넘어가도록 합시다. 아래는 하나의 텍스트 파일에 기록된 내용을 보여주고 있습니다. 여기서 각 단어들은 공백으로 구분되어 집니다. 각 줄(line)은 레코드(Record)라고 칭합니다. 그리고 그 안에 각각의 단어들이 필드(Field)가 되겠습니다.

AWK에서는 레코드가 $0, 그리고 $1, …, $N 은 필드를 나타내는 열을 나타냅니다. 우리들이 사용할 파일은 위 내용은 아니고 아래의 내용을 담고 있습니다.

file : awk_test_file.txt

name phone birth sex score reakwon 010-1234-1234 1981-01-01 M 100 sim 010-4321-4321 1999-09-09 F 88 nara 010-1010-2020 1993-12-12 M 20 yut 010-2323-2323 1988-10-10 F 59 kim 010-1234-4321 1977-07-17 M 69 nam 010-4321-7890 1996-06-20 M 75

awk의 기본 사용법은 패턴(pattern)과 액션(action)을 정의하여 입력으로 주어진 파일의 데이터를 가공하여 출력합니다. 이제부터 예를 볼 겁니다. 패턴과 액션 중 하나만 사용하여도 무관합니다.

awk pattern {action}

1. 열(Column)만 출력하기

각 $1, $2, $3 … 은 열에 대응한다고 했었죠. 그리고 $0는 레코드에 대응한다고 했습니다. 여기서 이름만 모두 출력하겠다고 한다면 아래와 같이 awk 명령을 수행하면 됩니다.

awk ‘{ print $1 }’ ./awk_test_file.txt

name reakwon sim nara yut kim nam

여러개의 열도 출력 가능합니다.

awk ‘{ print $1,$2 }’ ./awk_test_file.txt

name phone reakwon 010-1234-1234 sim 010-4321-4321 nara 010-1010-2020 yut 010-2323-2323 kim 010-1234-4321 nam 010-4321-7890

여기서 awk의 기본적인 action은 print이며 모든 열을 전부 출력합니다.

2. 특정 pattern이 포함된 레코드 출력

다음의 awk 명령은 rea라는 문자열이 포함된 레코드를 출력해주는 명령입니다.

awk ‘/rea/’ ./awk_test_file.txt

reakwon 010-1234-1234 1981-01-01 M 100

3. 출력의 내용 첨가

awk는 print에 문자열을 추가하여 출력물의 내용에 문자열을 추가할 수 있습니다. 만약 이름을 명시적으로 나타내기 위해 “name : ” , 그리고 휴대폰 번호를 명시적으로 나타내려고 “phone : ” 를 추가해서 출력하고 싶다면 아래의 awk 명령을 사용하면 됩니다.

awk ‘{ print (“name : ” $1, “, ” “phone : ” $2) }’ ./awk_test_file.txt

아래 출력에서 맨 윗줄은 무시하시면 됩니다.

name : name , phone : phone name : reakwon , phone : 010-1234-1234 name : sim , phone : 010-4321-4321 name : nara , phone : 010-1010-2020 name : yut , phone : 010-2323-2323 name : kim , phone : 010-1234-4321 name : nam , phone : 010-4321-7890

4. 특정 Record를 검색하기 – if 구문

4-1. ~이상 , ~ 이하의 레코드 출력

만약 위의 파일에서 점수가 80점 이상인 사람들의 레코드를 알고 싶다면 어떻게 하면 좋을까요? 이거는 pattern을 써야할까요, action을 써야할까요? action에서는 if 구문이 존재합니다. 그래서 이렇게 사용하면 80점 이상인 record를 출력할 수 있습니다.

awk ‘{ if ( $5 >= 80 ) print ($0) }’ ./awk_test_file.txt

name phone birth sex score reakwon 010-1234-1234 1981-01-01 M 100 sim 010-4321-4321 1999-09-09 F 88

혹은 아래와 같은 구문으로도 사용할 수도 있습니다.

awk ‘$5 >= 80 { print $0 }’ ./awk_test_file.txt

4-2. 남자의 데이터만 출력하기

역시 if 구문으로 지정할 수 있는데 단어 자체가 같은 것을 비교하려면 쌍따옴표(“)해주면 됩니다.

awk ‘{ if ( $4 == “M” ) print ($0) }’ ./awk_test_file.txt

reakwon 010-1234-1234 1981-01-01 M 100 nara 010-1010-2020 1993-12-12 M 20 kim 010-1234-4321 1977-07-17 M 69 nam 010-4321-7890 1996-06-20 M 75

4-3. 다중 조건을 활용하여 남자이면서 80점인 레코드 출력하기

여러 조건을 걸고 싶다면 어떻게 할까요? 다른 프로그래밍 언어와 유사하게 AND(&&) 조건과 OR(||) 조건을 활용할 수 있습니다. 여기서는 위의 두 조건을 && 묶어서 사용하면 됩니다. ||을 사용하면 OR조건으로 출력됩니다.

awk ‘{ if ( $4 == “M” && $5 >= 80) print ($0) }’ ./awk_test_file.txt

reakwon 010-1234-1234 1981-01-01 M 100

5. 내장 함수

awk에는 여러가지 내장함수들이 존재합니다. 단어의 길이를 알아내려면 length함수, 단어의 부분단어를 추출하려면 substr함수를 사용할 수 있습니다. 아래의 awk 명령은 이름의 길이와 이름의 3글자까지 출력을 하는 명령입니다.

awk ‘{ print (“name leng : ” length($1), “substr(0,3) : ” substr($1,0,3)) }’ ./awk_test_file.txt

name leng : 4 substr(0,3) : nam name leng : 7 substr(0,3) : rea name leng : 3 substr(0,3) : sim name leng : 4 substr(0,3) : nar name leng : 3 substr(0,3) : yut name leng : 3 substr(0,3) : kim name leng : 3 substr(0,3) : nam

이밖에도 모두 소문자로 출력하는 tolower함수, 모두 대문자로 출력하는 toupper 도 있습니다. 문자열을 쪼개는 split함수도 존재합니다. 여러 내장함수들이 있으니 필요시에 따라 사용하면 됩니다. 무엇이 있는지 어떻게 보냐구요? man 1 awk를 보시면 됩니다.

6. 반복문

반복문도 사용할 수 있습니다. C언어를 배우시는 분에게는 너무 익숙한 문법으로 사용할 수 있습니다. 아래는 단지 별의미 없이 for문의 사용법을 보여드리려 print를 2번까지 진행한 것입니다.

awk ‘{ for(i=0;i<2;i++) print( "for loop :" i "\t" $1, $2, $3) }' ./awk_test_file.txt for loop :0 name phone birth for loop :1 name phone birth for loop :0 reakwon 010-1234-1234 1981-01-01 for loop :1 reakwon 010-1234-1234 1981-01-01 for loop :0 sim 010-4321-4321 1999-09-09 for loop :1 sim 010-4321-4321 1999-09-09 for loop :0 nara 010-1010-2020 1993-12-12 for loop :1 nara 010-1010-2020 1993-12-12 for loop :0 yut 010-2323-2323 1988-10-10 for loop :1 yut 010-2323-2323 1988-10-10 for loop :0 kim 010-1234-4321 1977-07-17 for loop :1 kim 010-1234-4321 1977-07-17 for loop :0 nam 010-4321-7890 1996-06-20 for loop :1 nam 010-4321-7890 1996-06-20 7. BEGIN, END pattern BEGIN은 awk가 모든 레코드를 돌기 전에 한번 action을 수행하고 END는 모든 레코드를 다 돈 후에 마지막으로 정의한 action이 실행됩니다. 아래의 예에서 어떻게 사용되는지 살펴봅니다. 8. 변수 사용 awk 역시 언어이기 때문에 변수를 사용할 수 있습니다. 만약 우리가 위의 파일에서 총점과 평균을 구하고 싶다면 어떻게 하면 좋을까요? 레코드를 돌면서 각각의 점수를 더하면서 총점을 구하고, 총점을 사람의 수로 나누면 되지요. 그래서 구한 결과는 레코드가 끝난 마지막에 출력하면 되니 아까 이야기했던 END 패턴을 앞에 명시해줍니다. 아래의 awk가 그 명령입니다. 여기서 cnt가 -1부터 시작인 이유는 실제 레코드가 아닌 헤더가 존재하기 때문입니다. 이건 인원으로 볼 수 없죠. (name phone birth sex score) awk ' > BEGIN { > sum = 0 > cnt = -1 > } > > { > sum += $5 > cnt++ > } > > END { > avg = sum/cnt > print (“sum :” sum “, average :” avg) > }’ ./awk_test_file.txt

BEGIN에서는 초기화가 이루어지고, END에서는 결과를 출력해줍니다. 프로그래밍 언어를 배우셨다면 cnt++이나 sum +=$5의 구문이 무엇인지 아실겁니다. 모르시는 분은 구글 서치해보세요. 어렵지 않습니다.

이상으로 awk에 대한 사용법과 내용을 추출하는 여러가지 예제를 보았습니다. 깊이 알면 좋지만 저는 그렇게 깊이 알아서 사용할 일은 없어 여기까지만 설명하도록 하겠습니다.

[리눅스/유닉스] AWK 명령어 기본적인 사용문법 – NF/NR 그리고 패턴과액션

반응형

안녕하세요~~

오늘은 리눅스에서 자주 사용되는 명령어 중 하나인, awk에 대해 작성해보려고 해요. ㅎㅎ

awk란 무엇인가

명령어 cut은 자르다라는 의미, 명령어 sed도 Streamlined EDitor의 약자..

이렇듯 보통 명령어는 역할의 줄임말인 경우가 많은데

awk는 이와 다르게 이 명령어를 만든 세 사람의 이름을 따서 지어졌습니다. ㅎㅎ

awk는 데이터를 내가 원하는 포맷대로 쉽게 가공할 수 있도록 도와주는 명령어인데요

명령어보다는, 커맨드창에서 내가 원하는대로 텍스트를 가공할 수 있게 하는 프로그래밍 언어에 좀 더 가까워요.

아예 awk 프로그래밍 언어라고 하더라구요

암튼, 데이터 조작에 특화된 언어인데,

대표적으로 내가 원하는 열에 해당하는 데이터만 추출한다던가,,

아니면 패턴에 맞는 값만 추출한다던가.. 조건도 걸 수 있어요 연산도 가능~~

우리가 아는 for, if, substr, length, print, begin-end 구절 등등 꽤 익숙한 구절들을 명령구문에서 볼 수 있다는 것도 awk의 특징입니다.

요렇듯 awk는 단순 명령어 느낌보다는 스크립트 언어로 다양하게 확장(?)할 수 있어서 생각보다 간단하게 와닿지 않을 수 있어요.

하지만 문법 몇 가지만 익혀두면 굉장히 유용한 명령어입니다. 개인적으로는 스크립트 같은거 짤 때 활용도가 높은 것 같아요.

awk를 한 번에 다루려면 양이 너무 많으니 조금씩 나눠서 포스팅을 해보려합니다. 오늘은 그 시작 첫번째~!

필드와 레코드, NF와 NR

awk에서 텍스트를 조작하려면 알아야 할 개념 중 하나가 필드와 레코드입니당.

레코드는 쉽게 말해 행을 의미하는데요. 필드는 우리가 알고 있는 열 데이터를 의미해요.

awk는 sed명령어처럼 작업을 수행할 때, 한 번에 하나의 행만 가지고 와서 수행해요.

스크립트 언어니까~~~

그래서 내가 작업중인 행의 첫번째 열, 두 번째 열, 세 번째 열 이런식으로 접근합니다.

♠ 필드

$1하면 첫 번째 열 데이터 의미하고

$2하면 두 번째 열 데이터,

$3는 세 번째 열 데이터..

$n은 n번째 열이겠죠?

즉 $n은 n번째 필드값으로

그림 인풋의 행이 4개라고 가정하면, 인풋에 대한 $1 결과는 “아리 베인 겐지 티모”가 되겠어요.

♠ NF

내장변수로 NF라는게 있는데 ‘the Number of Fields’로 현재 레코드의 필드 개수를 뜻해요.

첫 번째 행에 “아리 한조 디바 애쉬” 요렇게 있으면 NF는 4가 되는겁니다.

위의 예시에서 $NF는 $4랑 동일한거죠.

따라서 $NF는 작업행기준 마지막 필드를 의미합니다.

♠ 레코드

레코드는 행을 의미해요. awk는 스크립트언어로 한 번에 한 행을 작업합니다.

현재 작업하고 있는 레코드 데이터를 출력하려면 $0을 사용하면 돼요.

$0이 전체 필드를 출력한다는 의미이기 때문입니당

♠ NR

NF처럼 NR도 있는데 NR은 전체 행의 개수가 아니라,

작업하던 행의 순번, 즉 현재 몇 번째 레코드를 작업하고 있는지를 담고 있어요.

예를 들어,

NR이 1일 때의 $0을 출력하면 ‘아리 한조 디바 애쉬’가 나오는거고,

NR이 2일 때의 $0을 출력하면 ‘베인 ~’가 나오는거고,

NR이 3일 때 $0은 ‘겐지~’가 되는거죠.

헷갈리지 말기~~~~

awk ‘NR>=10 && NR<=20' input.txt ▶ input.txt 텍스트파일에서 10행에서 20행까지를 보여줘 요런 NF, NR과 같은걸 내장변수라고 하는데요, AWK는 다양한 내장변수를 가지고 있답니다. 오늘은 자주사용하는 것만 훑고 내장변수에 대해서는 나중에 따로 더 알아보도록 해요. awk의 기본적인 문법 awk는 파란색 부분을 프로그램 파트라 하는데 프로그램 파트는 일련의 패턴과 액션으로 이뤄져있어요. 즉 하나가 아닌 여러개의 패턴액션이 나올 수 있다는거~ 패턴과 액션의 의미는 간단합니다. "레코드가 패턴에 맞으면 액션을 수행한다" 여기서 패턴과 액션을 둘 다 꼭 적어줘야 하는건 아니고, 필요에 따라 생략할 수 있어요. ♠ 액션이 생략된 경우 액션이 생략됐을 경우, 디폴트로 { print }가 있다고 봅니다. awk 'NR<=3 {print}' input.txt awk 'NR<=3' input.txt 즉 위 두 명령어는 같은 코드예요. 첫 번째 명령어에서 액션을 생략하면 두 번째 명령어가 되는거고, 사실 두 번째 명령어는 액션이 없어보이지만, 디폴트로 {print}라는 액션을 갖고 있는거죠. ♠ 패턴이 생략된 경우 마찬가지로 패턴이 생략될 수도 있는데요 패턴이 생략되면 조건이 없는거니까, 모든 레코드를 대상으로 합니다. awk '{print $1}' 위 명령어는 '모든 레코드의 첫 번째 필드를 출력해라'가 되는거죠 awk 명령어 사용 예시 [test.txt 파일] banana one 500 apple four 1000 grapes six 200 tomato two 700 간단하게 test.txt 파일을 테스트용으로 만들어보았어요. cat test.txt | awk '{print $NF}' test.txt파일에서 마지막 필드만 뽑아서 출력해줘 결과 cat test.txt | awk '{print $1,$3}' test.txt 파일에서 첫 번째 필드와 세 번째 필드를 뽑아줘 결과 cat test.txt | awk 'NR==2{print $1,$3}' 두 번째 레코드에 해당하는 첫 번째 필드와 세 번쨰 필드 값을 출력해줘 결과 cat test.txt | awk '/^ba/{print $1,$3}' cat test.txt | awk '/mat/{print $0}' cat test.txt | awk '/mat/{print $NF+500}' 1. ba로 시작하는 레코드를 찾아 첫번째 필드와 세번째 필드 값을 출력해라 2. mat이라는 문자열이 있는 레코드를 찾아 그 행 전체 값을 출력해라 3. mat이라는 문자열이 있는 레코드를 찾아 마지막 필드에다가 500을 더한 값을 출력해라 결과 알고나니 간단하죠? 오늘은 awk가 텍스트파일을 바라보는 기초적인 개념과 아주 기본 문법에 대해서만 다뤄봤어요. 도움이 되셨다면 공감은 어떤가요? 남은 awk는 다음 포스팅에서 살펴보도록 해요~ 반응형

So you have finished reading the 리눅스 awk topic article, if you find this article useful, please share it. Thank you very much. See more: 리눅스 awk 문자열 자르기, 리눅스 awk 옵션, 리눅스 awk grep, Awk 특정 문자열 추출, awk f옵션, 쉘스크립트 awk 변수 사용, Awk 옵션, 리눅스 awk NF

Leave a Comment