반응형
Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

/var/log/messages

awk 프로그래밍 본문

SUSE

awk 프로그래밍

로만로만 2023. 10. 1. 22:18
반응형

1. AWK란?
AWK는 텍스트 처리를 위한 프로그래밍 언어입니다. 주로 텍스트 파일 내에서 패턴을 찾고, 해당 패턴에 일치하는 라인을 처리하는 데 사용됩니다. 이름 "AWK"는 그 창시자 Alfred Aho, Peter Weinberger, 및 Brian Kernighan의 성의 첫 글자에서 유래했습니다.

2. 기본 구조
AWK의 기본 구조는 pattern { action } 입니다.

pattern: 처리하려는 라인과 일치해야 하는 조건
action: 패턴과 일치하는 라인에 대해 수행할 동작

3. 기본 사용법
기본 양식은 다음과 같습니다

4. 주요 기능
필드 분리자: AWK는 기본적으로 공백이나 탭을 필드 분리자로 사용합니다. 
                     각 필드는 $1, $2, $3 등으로 참조할 수 있습니다. $0은 전체 라인을 의미합니다.
빌트인 변수: AWK에는 NR(현재 라인 번호), NF(현재 라인의 필드 수)와 같은 유용한 내장 변수가 있습니다.
배열: AWK는 연관 배열을 지원합니다.

5. AWK의 주요 변수
NF: 현재 라인의 필드 수
NR: 현재 라인 번호
$0: 전체 라인
$1, $2, ...: 각각의 필드

6. 조건문과 반복문
AWK는 if, for, 그리고 while과 같은 기본 제어 구조를 지원합니다.

7. 유용 포인트
AWK는 텍스트 처리 작업에 최적화되어 있습니다.
필드 구분자로 공백을 기본값으로 사용하지만, -F 옵션으로 변경할 수 있습니다.
AWK는 내부적으로 정규 표현식을 지원합니다.

8. 예제
파일 내의 모든 라인 출력: awk '{ print }' filename

파일 내의 첫 번째 필드 출력: awk '{ print $1 }' filename
파일에서 가장 긴 라인 찾기: awk '{ if (length > max) { max = length; longest = $0 } } END { print longest }' filename
열의 평균값 계산하기: awk '{ sum += $1 } END { if (NR > 0) print sum / NR }' filename

중복 라인 제거 및 빈도수 출력하기: awk '{ count[$0]++ } END { for (line in count) print count[line], line }' filename | sort -n

특정 열의 값에 따라 파일 분할하기: awk '{ print > ($2 ".txt") }' filename

열의 합계 및 평균 계산하기 : awk '{ sum[$2] += $1; count[$2]++ } END { for (i in sum) print i, sum[i], sum[i]/count[i] }' filename

'SUSE' 카테고리의 다른 글

cpu 사용률  (0) 2023.10.28
어플리케이션과 프로세스의 차이  (0) 2023.10.21
쉘 스크립트 if문  (0) 2023.09.24
쉘 스크립트 배열  (2) 2023.09.03
Yast로 방화벽 구축하기  (0) 2023.08.11