題目描述
輸入文字檔案內容,每行都是一個美國城市的資料,每個欄位使用TAB字元分隔。第一個欄位是城市的名稱,接下來的四行分別是一到四月的平均氣溫。請將資料依照一月的平均氣溫來重新遞減排序後再輸出。
原題網址
輸入格式
輸入一個文字檔案。
輸出格式
將輸入的每行數值依照一月的平均氣溫來重新遞減排序後再輸出。
範例輸入
Albany, N.Y. 22.2 46.6 71.1 49.3 38.60 136 64.4 57 Albuquerque, N.M. 35.7 55.6 78.5 57.3 9.47 60 11.0 64 Anchorage, Alaska 15.8 36.3 58.4 34.1 16.08 115 70.8 39 / 60 Asheville, N.C. 35.8 54.1 73.0 55.2 47.07 126 15.3 39 Atlanta, Ga. 42.7 61.6 80.0 62.8 50.20 115 2.1 69 / 65 Atlantic City, N.J. 32.1 50.6 75.3 55.1 40.59 113 16.2 60 / 54 Austin, Texas 50.2 68.3 84.2 70.6 33.65 85 0.9 62 / 58 Baltimore, Md. 32.3 53.2 76.5 55.4 41.94 115 21.5 53 Baton Rouge, La. 50.1 66.6 81.7 68.1 63.08 110 0.2 52 / 46 Billings, Mont. 24.0 46.1 72.0 48.1 14.77 96 56.9 69 Birmingham, Ala. 42.6 61.3 80.2 62.9 53.99 117 1.5 60 Bismarck, N.D. 10.2 43.3 70.4 45.2 16.84 96 44.3 64 Boise, Idaho 30.2 50.6 74.7 52.8 12.19 89 20.6 64 Boston, Mass. 29.3 48.3 73.9 54.1 42.53 127 42.8 52 / 66 Bridgeport, Conn. 29.9 48.9 74.0 54.7 44.15 119 26.2 55 / 49
範例輸出
Austin, Texas 50.2 68.3 84.2 70.6 33.65 85 0.9 62 / 58 Baton Rouge, La. 50.1 66.6 81.7 68.1 63.08 110 0.2 52 / 46 Atlanta, Ga. 42.7 61.6 80.0 62.8 50.20 115 2.1 69 / 65 Birmingham, Ala. 42.6 61.3 80.2 62.9 53.99 117 1.5 60 Asheville, N.C. 35.8 54.1 73.0 55.2 47.07 126 15.3 39 Albuquerque, N.M. 35.7 55.6 78.5 57.3 9.47 60 11.0 64 Baltimore, Md. 32.3 53.2 76.5 55.4 41.94 115 21.5 53 Atlantic City, N.J. 32.1 50.6 75.3 55.1 40.59 113 16.2 60 / 54 Boise, Idaho 30.2 50.6 74.7 52.8 12.19 89 20.6 64 Bridgeport, Conn. 29.9 48.9 74.0 54.7 44.15 119 26.2 55 / 49 Boston, Mass. 29.3 48.3 73.9 54.1 42.53 127 42.8 52 / 66 Billings, Mont. 24.0 46.1 72.0 48.1 14.77 96 56.9 69 Albany, N.Y. 22.2 46.6 71.1 49.3 38.60 136 64.4 57 Anchorage, Alaska 15.8 36.3 58.4 34.1 16.08 115 70.8 39 / 60 Bismarck, N.D. 10.2 43.3 70.4 45.2 16.84 96 44.3 64
額外解釋
注意看範例輸出的第二個欄位,也就是一月的平均氣溫,已經使用遞減排序了。
解題概念
「sort」指令可以用來排序從標準輸入中進來的文字資料,並輸出至標準輸出中。在預設的情況下,「sort」指令會使用辭典排序來排序各行。如果加上選項「-n」,則會使用數值遞增排序。再加上選項「-r」,則可使用遞減排序。加上選項「-k」,可以指定要排序的欄位位置。加上選項「-t」,可以指定分割欄位所用的字元。
參考答案
#/bin/bash
sort -n -r -k 2 -t $'\t'