Awk 語言指令
AWK是一種優良的文字處理工具,Linux及Unix環境中現有的功能最強大的資料處理引擎之一。
這種編程及資料操作語言的最大功能取決於一個人所擁有的知識。
AWK提供了極其強大的功能:可以進行正規表示式的匹配,樣式裝入、流控制、數學運算子、行程控制語句甚至於內建的變數和函式。
- awk
基本用法,預設不寫分隔符的話是用空白或Tab來分隔 - awk -F,
使用 , (逗號)當分隔符號,可替換成想要的分隔符號 - awk -va=O -vb=X
輸入自訂的變數a, b - awk -f script.awk testfile.txt
使用 script 讀取awk命令
詳細介紹與範例
awk
基本用法,預設不寫分隔符的話是用空白或Tab來分隔
ps. ‘{print O, O, …}’ 單引號’ ‘、大括號{}、print 和 逗號, 缺一不可
Test File: testFile.txt
A B C D
1 2 3 4
Example.1-1
awk '{print $1, $2, $4}' testFile.txt
Output
A B D
1 2 4
awk -F, or
awk –field
使用 , (逗號)當分隔符號,可替換成想要的分隔符號(預設不寫分隔符的話是用空白或Tab來分隔)
ps. 灰色部分為 自定義參數
Test File: testFile.txt
A: B, C/ D
1/ 2: 3, 4
Example.2-1
awk -F: '{print $1, $2}' testFile.txt
Output
A B, C/ D
1/ 2 3, 4
Example.2-2
awk -F/ '{print $1, $2}' testFile.txt
Output
A: B, C/ D
1 2: 3, 4
awk -va=O or
awk –asign va=O
輸入自訂的變數a, b (ex. a=O, b=X)
ps. 灰色部分為 自定義參數
Test File: testFile.txt
A: B, C/ D
1/ 2: 3, 4
Example.3-1
awk -vb=1 -vc=5 '{print $1, $4, $1+b, $4+c}' testFile.txt
Output
A D 1 5
1 4 2 9
awk -f script.awk or
awk –file script.awk
從 自定義的 script.awk 中讀取awk 命令
BEGIN //執行前
END //執行後
Test File: calories.txt
Sun 400 900 800
Mon 450 600 500
Tue 300 750 470
Wed 289 530 850
Thu 670 430 690
Fri 490 380 477
Sat 568 455 399
Test File: script.awk
#!/bin/awk -f
BEGIN {
sum = 0
daily_calories = 0
printf "Week Morning Noon Night Daily\n"
printf "--------------------------------\n" }
{
daily_calories = $2+$3+$4
sum += daily_calories
printf "%s %d %d %d %d\n", $1, $2, $3, $4, daily_calories }
END {
printf "--------------------------------\n"
printf "Weekly total calories: %d\n", sum }
Example. 4-1
awk -f script.awk calories.txt
Output
Week Morning Noon Night Daily
Sun 400 900 800 2100
Mon 450 600 500 1550
Tue 300 750 470 1520
Wed 280 530 850 1660
Thu 670 430 690 1790
Fri 490 380 470 1340
Sat 560 450 390 1400
Weekly total calories: 11360