根據表格資料計算列中值的中位數
給定一個檔案使用 ;
作為列分隔符。我們使用以下為 GNU awk 編寫的程式計算第二列中值的中值。提供的輸入是學生組的成績列表:
gawk -F';' '{ sample[NR] = $2 }
END {
asort(sample);
if(NR % 2 == 1) {
print(sample[int(NR/2) + 1])
} else {
print(sample[NR/2])
}
}' <<EOF
Alice;2
Victor;1
Barbara;1
Casper;4
Deborah;0
Ernest;1
Fabiola;4
Giuseppe;4
EOF
這個程式的輸出是 1
。
請記住,NR
儲存正在處理的行的編號,因此在 END
塊中它儲存檔案中的總行數。
awk 的許多實現沒有對陣列進行排序的函式,因此需要在使用上面的程式碼之前對其進行定義。