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