Article Outline
Fleet
當然可以!這裡是使用 awk
的基本介紹,將逐步介紹並逐步增加複雜度,讓你能夠
步驟 1: 基本輸出
首先,我們使用 echo
和 awk
來處理一串文字,並將其全部輸出:
echo "Hello World" | awk '{print}'
這條命令會將 "Hello World"
輸出到終端。
步驟 2: 選擇性列印字段
使用 awk
的字段選擇功能,從一行文本中選擇並列印特定字段。awk
預設以空白作為字段分隔符:
echo "Hello World" | awk '{print $2}'
這會列印 "World"。
步驟 3: 更改字段分隔符
使用 -F
選項來指定字段分隔符。例如,使用冒號分隔:
echo "name:John" | awk -F':' '{print $2}'
這會列印 "John"。
步驟 4: 使用條件過濾
僅在條件成立時輸出行。例如,僅當第二字段等於 "World" 時:
echo -e "Hello World\nHello There" | awk '$2 == "World" {print}'
這將只輸出 "Hello World"。
步驟 5: 列印行號
列印每行的行號及其內容:
echo -e "Hello World\nHello There" | awk '{print NR, $0}'
NR
是 awk
中的內建變量,代表當前的行號。
步驟 6: 累加字段值
對一列數字進行累加。例如,計算總和:
echo -e "1\n2\n3\n4" | awk '{sum += $1} END {print sum}'
這會在結束時輸出 "10"。
步驟 7: 格式化輸出
使用 printf
來格式化輸出,例如,格式化貨幣:
echo "1000" | awk '{printf "$%.2f\n", $1}'
這將輸出 "$1000.00"。
步驟 8: 處理多列數據
假設有多列數據,計算平均值:
echo -e "10 20\n30 40\n50 60" | awk '{sum1 += $1; sum2 += $2} END {print "Average 1:", sum1/NR; print "Average 2:", sum2/NR}'
這將計算兩列的平均值。
步驟 9: 使用外部變數
將 shell 變數傳入 awk
:
threshold=20
echo -e "10\n20\n30" | awk -v thresh="$threshold" '$1 > thresh {print}'
這將只列印大於 20 的數字,即 "30"。
步驟 10: 多個條件和模式
組合多個條件,並針對每個條件進行不同的處理:
echo -e "Apple 1\nBanana 2\nCherry 3" | awk '$2 == 1 {print "One", $1} $2 == 2 {print "Two", $1} $2 > 2 {print "Many", $1}'
這會根據第二字段的值來改變
輸出。
以上步驟逐漸引導你了解 awk
的基本功能到更複雜的使用情況,希望這對你有幫助!