"Awk 명령어"의 두 판 사이의 차이
DB CAFE
(새 문서: == awk 명령어 == <source lang=bash> awk [OPTION...] [awk program] [ARGUMENT...] OPTION -F : 필드 구분 문자 지정. -f : awk program 파일...) |
|||
2번째 줄: | 2번째 줄: | ||
<source lang=bash> | <source lang=bash> | ||
awk [OPTION...] [awk program] [ARGUMENT...] | awk [OPTION...] [awk program] [ARGUMENT...] | ||
− | OPTION | + | [OPTION] |
-F : 필드 구분 문자 지정. | -F : 필드 구분 문자 지정. | ||
-f : awk program 파일 경로 지정. | -f : awk program 파일 경로 지정. | ||
-v : awk program에서 사용될 특정 variable값 지정. | -v : awk program에서 사용될 특정 variable값 지정. | ||
− | awk program | + | |
+ | [awk program] | ||
-f 옵션이 사용되지 않은 경우, awk가 실행할 awk program 코드 지정. | -f 옵션이 사용되지 않은 경우, awk가 실행할 awk program 코드 지정. | ||
− | ARGUMENT | + | |
+ | [ARGUMENT] | ||
입력 파일 지정 또는 variable 값 지정. | 입력 파일 지정 또는 variable 값 지정. | ||
</source> | </source> | ||
17번째 줄: | 19번째 줄: | ||
==== "BEGIN"과 "END" 패턴 사용 예제 ==== | ==== "BEGIN"과 "END" 패턴 사용 예제 ==== | ||
− | <source lang= | + | <source lang=bash> |
− | $ awk 'BEGIN { print "TITLE : Field value 1,2"} {print $1, $2} END {print "Finished"}' file.txt | + | $ awk 'BEGIN { print "TITLE : Field value 1,2"} |
+ | {print $1, $2} | ||
+ | END {print "Finished"}' | ||
+ | file.txt | ||
</source> | </source> | ||
=== 사용 예제 === | === 사용 예제 === | ||
+ | |||
==== file.txt의 모든 레코드 출력 ==== | ==== file.txt의 모든 레코드 출력 ==== | ||
<source lang=bash> | <source lang=bash> | ||
− | + | awk '{ print }' ./file.txt | |
</source> | </source> | ||
==== file.txt에서 p를 포함하는 레코드 출력 ==== | ==== file.txt에서 p를 포함하는 레코드 출력 ==== | ||
− | <source lang= | + | <source lang=bash> |
− | + | awk '/p/' ./file.txt | |
</source> | </source> | ||
==== 레코드 길이 10 이상인 경우, 세 번째($3), 네 번째($4), 다섯 번째($5) 필드 출력 ==== | ==== 레코드 길이 10 이상인 경우, 세 번째($3), 네 번째($4), 다섯 번째($5) 필드 출력 ==== | ||
− | <source lang= | + | <source lang=bash> |
− | + | awk 'length($0) > 10 { print $3, $4, $5} ' ./file.txt | |
</source> | </source> | ||
==== 필드 값 출력 ==== | ==== 필드 값 출력 ==== | ||
− | <source lang= | + | <source lang=bash> |
awk '{ print $1 }' [FILE] | awk '{ print $1 }' [FILE] | ||
</source> | </source> | ||
− | 필드 값에 임의 문자열을 같이 출력 | + | ==== 필드 값에 임의 문자열을 같이 출력 ==== |
+ | <source lang=bash> | ||
awk '{print "STR"$1, "STR"$2}' [FILE] | awk '{print "STR"$1, "STR"$2}' [FILE] | ||
− | + | </source> | |
− | 지정된 문자열을 포함하는 레코드만 출력 | + | ==== 지정된 문자열을 포함하는 레코드만 출력 ==== |
+ | <source lang=bash> | ||
awk '/STR/' [FILE] | awk '/STR/' [FILE] | ||
− | + | </source> | |
− | 특정 필드 값 비교를 통해 선택된 레코드만 출력 awk '$1 == 10 { print $2 }' [FILE] | + | ==== 특정 필드 값 비교를 통해 선택된 레코드만 출력 ==== |
− | + | <source lang=bash> | |
− | 특정 필드들의 합 | + | awk '$1 == 10 { print $2 }' [FILE] |
− | + | </source> | |
+ | ==== 특정 필드들의 합 ==== | ||
+ | <source lang=bash> | ||
awk '{sum += $3} END { print sum }' [FILE] | awk '{sum += $3} END { print sum }' [FILE] | ||
− | + | </source> | |
− | 여러 필드들의 합 구하기 | + | ==== 여러 필드들의 합 구하기 ==== |
+ | <source lang=bash> | ||
awk '{ for (i=2; i<=NF; i++) total += $i }; END { print "TOTAL : "total }' [FILE] | awk '{ for (i=2; i<=NF; i++) total += $i }; END { print "TOTAL : "total }' [FILE] | ||
− | + | </source> | |
− | 레코드 단위로 필드 합 및 평균 값 | + | ==== 레코드 단위로 필드 합 및 평균 값 ==== |
+ | <source lang=bash> | ||
awk '{ sum = 0 } {sum += ($3+$4+$5) } { print $0, sum, sum/3 }' [FILE] | awk '{ sum = 0 } {sum += ($3+$4+$5) } { print $0, sum, sum/3 }' [FILE] | ||
− | + | </source> | |
− | 필드에 연산을 수행한 결과 | + | ==== 필드에 연산을 수행한 결과 출력 ==== |
+ | <source lang=bash> | ||
awk '{print $1, $2, $3+2, $4, $5}' [FILE] | awk '{print $1, $2, $3+2, $4, $5}' [FILE] | ||
− | + | </source> | |
− | 레코드 또는 필드의 문자열 길이 검사 | + | ==== 레코드 또는 필드의 문자열 길이 검사 ==== |
+ | <source lang=bash> | ||
awk ' length($0) > 20' [FILE] | awk ' length($0) > 20' [FILE] | ||
− | + | </source> | |
− | 파일에 저장된 awk program 실행 | + | ==== 파일에 저장된 awk program 실행 ==== |
+ | <source lang=bash> | ||
awk -f [AWK FILE] [FILE] | awk -f [AWK FILE] [FILE] | ||
− | + | </source> | |
− | 필드 구분 문자 변경하기 | + | ==== 필드 구분 문자 변경하기 ==== |
+ | <source lang=bash> | ||
awk -F ':' '{ print $1 }' [FILE] | awk -F ':' '{ print $1 }' [FILE] | ||
− | + | </source> | |
− | awk 실행 결과 레코드 정렬하기 | + | ==== awk 실행 결과 레코드 정렬하기 ==== |
+ | <source lang=bash> | ||
awk '{ print $0 }' [FILE] | awk '{ print $0 }' [FILE] | ||
− | + | </source> | |
− | 특정 레코드만 출력하기 | + | ==== 특정 레코드만 출력하기 ==== |
+ | <source lang=bash> | ||
awk 'NR == 2 { print $0; exit }' [FILE] | awk 'NR == 2 { print $0; exit }' [FILE] | ||
− | + | </source> | |
− | 출력 필드 너비 지정하기 | + | ==== 출력 필드 너비 지정하기 ==== |
+ | <source lang=bash> | ||
awk '{ printf "%-3s %-8s %-4s %-4s %-4s\n", $1, $2, $3, $4, $5}' [FILE] | awk '{ printf "%-3s %-8s %-4s %-4s %-4s\n", $1, $2, $3, $4, $5}' [FILE] | ||
− | + | </source> | |
− | 필드 중 최대 값 출력 | + | ==== 필드 중 최대 값 출력 ==== |
+ | <source lang=bash> | ||
awk '{max = 0; for (i=3; i<NF; i++) max = ($i > max) ? $i : max ; print max}' [FILE] | awk '{max = 0; for (i=3; i<NF; i++) max = ($i > max) ? $i : max ; print max}' [FILE] | ||
+ | </source> |
2023년 8월 31일 (목) 21:02 판
thumb_up 추천메뉴 바로가기
- DBA { Oracle DBA 명령어 > DBA 초급 과정 > DBA 고급 과정 }
- 튜닝 { 오라클 튜닝 목록 }
- 모델링 { 데이터 모델링 가이드 }
목차
- 1 awk 명령어
- 1.1 패턴 "BEGIN" 과 "END"
- 1.2 사용 예제
- 1.2.1 file.txt의 모든 레코드 출력
- 1.2.2 file.txt에서 p를 포함하는 레코드 출력
- 1.2.3 레코드 길이 10 이상인 경우, 세 번째($3), 네 번째($4), 다섯 번째($5) 필드 출력
- 1.2.4 필드 값 출력
- 1.2.5 필드 값에 임의 문자열을 같이 출력
- 1.2.6 지정된 문자열을 포함하는 레코드만 출력
- 1.2.7 특정 필드 값 비교를 통해 선택된 레코드만 출력
- 1.2.8 특정 필드들의 합
- 1.2.9 여러 필드들의 합 구하기
- 1.2.10 레코드 단위로 필드 합 및 평균 값
- 1.2.11 필드에 연산을 수행한 결과 출력
- 1.2.12 레코드 또는 필드의 문자열 길이 검사
- 1.2.13 파일에 저장된 awk program 실행
- 1.2.14 필드 구분 문자 변경하기
- 1.2.15 awk 실행 결과 레코드 정렬하기
- 1.2.16 특정 레코드만 출력하기
- 1.2.17 출력 필드 너비 지정하기
- 1.2.18 필드 중 최대 값 출력
1 awk 명령어[편집]
awk [OPTION...] [awk program] [ARGUMENT...]
[OPTION]
-F : 필드 구분 문자 지정.
-f : awk program 파일 경로 지정.
-v : awk program에서 사용될 특정 variable값 지정.
[awk program]
-f 옵션이 사용되지 않은 경우, awk가 실행할 awk program 코드 지정.
[ARGUMENT]
입력 파일 지정 또는 variable 값 지정.
1.1 패턴 "BEGIN" 과 "END"[편집]
- awk가 BEGIN 패턴을 식별하면 입력 데이터로부터 첫 번째 레코드를 처리하기 전에 "BEGIN"에 지정된 액션 실행
- "END" 패턴은 "BEGIN"과 반대로, 모든 레코드를 처리한 다음 "END"에 지정된 액션을 실행
1.1.1 "BEGIN"과 "END" 패턴 사용 예제[편집]
$ awk 'BEGIN { print "TITLE : Field value 1,2"}
{print $1, $2}
END {print "Finished"}'
file.txt
1.2 사용 예제[편집]
1.2.1 file.txt의 모든 레코드 출력[편집]
awk '{ print }' ./file.txt
1.2.2 file.txt에서 p를 포함하는 레코드 출력[편집]
awk '/p/' ./file.txt
1.2.3 레코드 길이 10 이상인 경우, 세 번째($3), 네 번째($4), 다섯 번째($5) 필드 출력[편집]
awk 'length($0) > 10 { print $3, $4, $5} ' ./file.txt
1.2.4 필드 값 출력[편집]
awk '{ print $1 }' [FILE]
1.2.5 필드 값에 임의 문자열을 같이 출력[편집]
awk '{print "STR"$1, "STR"$2}' [FILE]
1.2.6 지정된 문자열을 포함하는 레코드만 출력[편집]
awk '/STR/' [FILE]
1.2.7 특정 필드 값 비교를 통해 선택된 레코드만 출력[편집]
awk '$1 == 10 { print $2 }' [FILE]
1.2.8 특정 필드들의 합[편집]
awk '{sum += $3} END { print sum }' [FILE]
1.2.9 여러 필드들의 합 구하기[편집]
awk '{ for (i=2; i<=NF; i++) total += $i }; END { print "TOTAL : "total }' [FILE]
1.2.10 레코드 단위로 필드 합 및 평균 값[편집]
awk '{ sum = 0 } {sum += ($3+$4+$5) } { print $0, sum, sum/3 }' [FILE]
1.2.11 필드에 연산을 수행한 결과 출력[편집]
awk '{print $1, $2, $3+2, $4, $5}' [FILE]
1.2.12 레코드 또는 필드의 문자열 길이 검사[편집]
awk ' length($0) > 20' [FILE]
1.2.13 파일에 저장된 awk program 실행[편집]
awk -f [AWK FILE] [FILE]
1.2.14 필드 구분 문자 변경하기[편집]
awk -F ':' '{ print $1 }' [FILE]
1.2.15 awk 실행 결과 레코드 정렬하기[편집]
awk '{ print $0 }' [FILE]
1.2.16 특정 레코드만 출력하기[편집]
awk 'NR == 2 { print $0; exit }' [FILE]
1.2.17 출력 필드 너비 지정하기[편집]
awk '{ printf "%-3s %-8s %-4s %-4s %-4s\n", $1, $2, $3, $4, $5}' [FILE]
1.2.18 필드 중 최대 값 출력[편집]
awk '{max = 0; for (i=3; i<NF; i++) max = ($i > max) ? $i : max ; print max}' [FILE]