題目描述
輸入文字檔案內容,每行都是一個美國城市的資料,每個欄位使用「|」字元分隔。第一個欄位是城市的名稱,接下來的四行分別是一月的平均氣溫、四月的平均氣溫、七月的平均氣溫、十月的平均氣溫。請將資料依照一月的平均氣溫來重新遞減排序後再輸出。
原題網址
輸入格式
輸入一個文字檔案。
輸出格式
將輸入的每行數值依照一月的平均氣溫來重新遞減排序後再輸出。
範例輸入
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 '|'