Linux命令之sort指令
1. 用man sort 查看sort的幫助文檔
2. sort常用選項有哪些,都有什么功能?提交相關使用的截圖
3. 如果讓你編寫sort,你怎么實現?寫出偽代碼和相關的函數或系統調用
1.使用指令后,查閱結果如下:
2.通過幫助文檔,可以獲取一些sort命令的選項,例如:
參考網站:https://www.runoob.com/linux/linux-comm-sort.html
-b 忽略每行前面開始出的空格字符。
-c 檢查文件是否已經按照順序排序。
-d 排序時,處理英文字母、數字及空格字符外,忽略其他的字符。
-f 排序時,將小寫字母視為大寫字母。
-i 排序時,除了040至176之間的ASCII字符外,忽略其他的字符。
-m 將幾個排序好的文件進行合並。
-M 將前面3個字母依照月份的縮寫進行排序。
-n 依照數值的大小排序。
-u 意味着是唯一的(unique),輸出的結果是去完重了的。
-o<輸出文件> 將排序后的結果存入指定的文件。
-r 以相反的順序來排序。
-t<分隔字符> 指定排序時所用的欄位分隔字符。
+<起始欄位>-<結束欄位> 以指定的欄位來排序,范圍由起始欄位到結束欄位的前一欄位。
--help 顯示幫助。
--version 顯示版本信息。
在這里,我選取其中一些較為常用的選項進行實踐
首先先創建兩個文本文件供排序使用
/**********st1**********/
20191301 zhangsan 95 A
20191308 zhaosi 99 A
20191322 wangwu 62 B
20191329 zhaoliu 85 A
20191319 jiayi 74 E
20191212 bingding 55 F
20191315 wuxu 95 D
/**********st2**********/
20191329 zhaoliu 85 A
20191320 pipa 85 A
20191213 wuji 58 B
20191316 shenyou 85 E
經過單一的sort命令后,自動對第一列進行排列,得到如下結果
下面對其它選項進行實踐驗證
(1)
sort st1 -o st3 //將st1文件排序后輸出到st3中
(2)
sort -c //檢驗是否為經過排序的文件,是的話不會提示任何內容,否則會提示出第一個出現錯誤的行
(3)
sort -r st1 //倒序輸出排序結果
(4)
sort -k2 st1 //將st1中的文件的第2列為主關鍵字進行排序
sort -k4 st1 //將st1中的文件的第4列為主關鍵字進行排序
(5)
sort -m st1 st2 //將st1與st2的內容合並。
//如果都是排序好的文件的話(st3為st1的排序結果,st4為st2的排序結果)可以直接將兩文件合並后排序
3.偽代碼及相關函數
已知存在st文件為待排序文本文件
(1)頭文件
(2)打開讀取文本文件
(3)創立二維數組,以i,j分別作為行號,列號
(4)將文本文件中的內容,按照文件中的順序代入數組,以空格區分列
(5)根據sort命令,判斷排序的主關鍵字(第幾列),然后將列數組進行冒泡排序
默認情況下冒泡排序:將num[1,1]與num[2,1],進行比對,若前者小於后者則繼續比對num[2,1]與num[3.1],否則將兩者順序互換,繼續比對num[2,1]與num[3.1],直到遍歷所有行
(6)在進行冒泡排序時,如果進行互換,還要將同一行的內容全部進行對換
(7)輸出最終結果
(8)關閉並保存文件