排序 (sorting)
 
   
排序是很常見的資料處理任務,Unix 提供 'sort' 指令,將各行以按字母順序或數值順序正排或反排, 如果資料檔案有分欄,使用者也可以指定欄位作為排序的根據。
 
 
正排與反排
 
   
正排與反排的定義如下:
  字母排序
(Alphanumerical)
數值排序
正排
自前而後
自小而大
反排
自後而前
自大而小
註: 在 Alphanumerical 中,數字在前,字母在後,數字被視為字串之一,而非數值,因此'11' 排在 '2' 之前。 當檔案名稱中有數字時,使用'ls' 指令列出檔案名稱時,其排序方式就是 Alphanumerical。
 
 
Options
 
   
幾個常用的 option 如下,其他許多 option 可從manual 得知:
Option 說明
-n
數值排序,預設是字母排序
-r
反排,預設是正排
-u
刪除重複之行
-f
忽略大小寫(相同字母之間,大寫在前)
-t
指定分欄符號,
預設值是「空白」符號,
而最前面與最後面的空白自動被忽略。
-k
指定排序的欄位
 
 
例:將一個檔案上下翻轉
# -----------------------------------------------
# Script: reverse
# 將一個檔案上下翻轉,輸出於 STDOUT
# Usage: reverse inputfile
# ----------------------------------------------- 
cat -n $1 | sort -nr | sed 's/...... //' #用cat -n 加上 line number, 再利用 sort 將其上下翻轉,最後除掉行數
 
   
只需一行簡單的程式碼,即可達成任務,讀者由此可體會shell programming 的強大

Web Page Copyright: 亞洲大學資訊電機學院 連耀南 yaonanlien@asia.edu.tw  sort.htm,  Thu Feb 8 22:21:58 CST 2024