: << 'AWK COMMAND'
# AWK ์ ๊ธฐ๋ฅ์ ๋์์ธ ํ ์ฌ๋๋ค์ ์ด๋์
๋ก ๋ง๋ค์ด์ง
# A : Alfred V. [A]ho, W : Peter J. [W]einberger, K : Brian W. Kernighan
# ํ์ผ๋ก๋ถํฐ ๋ ์ฝ๋๋ฅผ ์ ํํ๊ณ , ์ ํํ ๋ ์ฝ๋์ ํฌํจ๋ ๊ฐ์ ์กฐ์ํ๊ฑฐ๋ ๋ฐ์ดํฐํ ํ๊ธฐ ์ํด ๋ง๋ค์ด์ง
# awk [์ต์
] [awk ํ๋ก๊ทธ๋จ] [ํ์ผ๋ช
] ํํ๋ก ์ฌ์ฉ
# ์ต์
# -F : ํ๋ ๊ตฌ๋ถ์ ์ง์
# -f : awk ํ๋ก๊ทธ๋จ ํ์ผ ๊ฒฝ๋ก ์ง์
# -v : awk ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉํ ํน์ variable ๊ฐ ์ง์
# awk ํ๋ก๊ทธ๋จ ๊ธฐ๋ณธ ๊ตฌ์กฐ
# pattern { action } ํํ => echo -e 'no\ttitle\n1\tsubject1' | awk '/sub/ { print }'
# pattern์ ์๋ตํ๋ฉด ๋ชจ๋ ๋ ์ฝ๋๊ฐ ์ ์ฉ๋จ => echo -e 'no\ttitle\n1\tsubject1' | awk '{ print }'
# action ์ ์๋ตํ๋ฉด ๊ธฐ๋ณธ ์ก์
์ธ print ๊ฐ ์คํ ๋จ => echo -e 'no\ttitle\n1\tsubject1' | awk '/sub/'
# ์ง์ ๋ ๋ฌธ์์ด์ ํฌํจํ๋ ๋ ์ฝ๋๋ง ์ถ๋ ฅ
echo -e 'no\ttitle\n1\tsubject1' | awk '/sub/ { print }'
# ํ์ผ์ ์ ์ฒด ๋ด์ฉ ์ถ๋ ฅ
echo -e "a b c\nd e f" | awk '{ print }'
# ํ๋ ๊ฐ ์ถ๋ ฅ
echo -e "a b c\nd e f" | awk '{ print $1 }'
# ํ๋ ๊ฐ์ ์์ ๋ฌธ์์ด์ ๊ฐ์ด ์ถ๋ ฅ
echo -e "a b c\nd e f" | awk '{print "FIRST : "$1, "SECOND : "$2}'
# ํ๋ ์ค ์ต๋ ๊ฐ ์ถ๋ ฅ
echo -e "1\t2\t3\t4\n5\t6\n7\tA\t8" | awk '{max = 0; for (i=3; i < NF; i++) max = ($i > max) ? $i : max; print max}'
# ํ์ผ์ ์ ์ฅ๋ awk program ์คํ
echo "{max = 0; for (i=3; i < NF; i++) max = (\$i > max) ? \$i : max; print max}" > awk.awk
echo -e "1\t2\t3\t4\n5\t6\n7\tA\t8" | awk -f awk.awk
# ํ๋ ๊ตฌ๋ถ ๋ฌธ์ ๋ณ๊ฒฝํ๊ธฐ
# echo -e "1:2:3\n7 8 9" | awk -F ':' '{ print $1 }'
# ํน์ ํ๋ ๊ฐ ๋น๊ต๋ฅผ ํตํด ์ ํ๋ ๋ ์ฝ๋๋ง ์ถ๋ ฅ
echo -e "1\t2\t3\t4\n5\t6\n7\tA\t8" | awk '$1 == 5 { print $2 }'
# ํน์ ํ๋๋ค์ ํฉ ๊ตฌํ๊ธฐ
echo -e "1\t2\t3\t4\n5\t6\n7\tA\t8" | awk '{sum += $3} END { print sum }'
# ๋ ์ฝ๋ ๋จ์๋ก ํ๋ ํฉ ๋ฐ ํ๊ท ๊ฐ ๊ตฌํ๊ธฐ
echo -e "1\t2\t3\t4\n5\t6\n7\tA\t8" | awk '{ num = 0; sum = 0 } { num +=1; sum += ($3+$4+$5) } { print $0, "SUM="sum, "AVG="sum/num }'
# ํ๋์ ์ฐ์ฐ์ ์ํํ ๊ฒฐ๊ณผ ์ถ๋ ฅํ๊ธฐ
echo -e "1\t2\t3\t4\n5\t6\n7\tA\t8" | awk '{print $1, $2, $3+2, $4, $5}'
# length ๋ช
๋ น์ด
# ๋ ์ฝ๋์ ๊ธธ์ด๋ฅผ ์ถ๋ ฅํ์ฌ ์ฃผ๋ ๋ช
๋ น์ด
# 'length($0) > n { print $N }' => echo -e 'no\ttitle\n1\tsubject1' | awk 'length($0) > 8 { print $1, $2 }'
# ํน์ ๋ ์ฝ๋๋ง ์ถ๋ ฅํ๊ธฐ
# exit ๋ awk ๋์ค ์ข
๋ฃ
echo -e "1 2\n3 4\n5 6" | awk 'NR == 2 { print $0; exit }'
# ๋ ์ฝ๋ ๋๋ ํ๋์ ๋ฌธ์์ด ๊ธธ์ด ๊ฒ์ฌ
echo -e "12345678901234567890\n123456789012345678901" | awk ' length($0) > 20'
# BEGIN, END ๋ช
๋ น์ด
# action ์ ์คํ ํ๊ธฐ ์ ๊ณผ ํ์ ์คํํ ๋ช
๋ น์ด๋ฅผ ์ง์ ๊ฐ๋ฅ
# 'BEGIN { print word } { print $N } END { print word }'
echo -e 'no\ttitle' | awk 'BEGIN { print "START"} {print $2} END {print "END"}'
# for ๋ช
๋ น์ด
# ๋ ์ฝ๋์ ํ๋์๋งํผ ๋ฃจํ๋ฅผ ๊ฐ์ง๋ ๋ช
๋ น์ด
echo -e "1\t2\t3\t4\n5\t6\n7\tA\t8" | awk '{ for (i=2; i <= NF; i++) print $i }'
echo -e "1\t2\t3\t4\n5\t6\n7\tA\t8" | awk '{ for (i=2; i <= NF; i++) total += $i }; END { print total }'
echo -e "1\t2\t3\t4\n5\t6\n7\tA\t8" | awk '{max = 0; for (i=3; i<NF; i++) max = ($i > max) ? $i : max ; print max}'
echo -e "1\t2\t3\t4\n5\t6\n7\tA\t8" | awk '{ for (i=3; i<NF; i++) max = ($i > max) ? $i : max ;} END { print max }'
# for ๋ฌธ์ ๊ฐ๋ก๋ก ๊ฐ์ธ์ค ์ ์์
echo -e "1\t2\t3\t4\n5\t6\n7\tA\t8" | awk '{ for (i=2; i <= NF; i++) {print $i;print $i+1} }'
# ์ถ๋ ฅ ํ๋ ๋๋น ์ง์ ํ๊ธฐ
echo -e "1\t2\t3\t4\n5\t6\n7\tA\t8" | awk '{ printf "%-3s %-8s %-4s %-4s %-4s\n", $1, $2, $3, $4, $5}'
# ์ฐธ์กฐ
# https://recipes4dev.tistory.com/171#4-awk-program-language
AWK COMMAND
':: Linux ๐ฉ > Linux_basic' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฆฌ๋ ์ค] [์นผ๋ฆฌ ๋ฆฌ๋ ์ค(KALI LINUX)] (0) | 2021.05.26 |
---|---|
[๋ฆฌ๋ ์ค] [Raid 1] (0) | 2021.05.19 |
[๋ฆฌ๋ ์ค] [Raid 0] (0) | 2021.05.19 |
[๋ฆฌ๋ ์ค] [at , cron] (0) | 2021.05.18 |
[๋ฆฌ๋ ์ค1] 5์ผ์ฐจ [grep, -E ์ต์ , ์ต์ ๋ค] (0) | 2021.04.27 |
๋๊ธ