Sort命令
阿新 • • 發佈:2021-09-28
Sort
首先在Linux中使用man引數來檢視sort的相關用法
man sort
如圖所示:
sort常用命令選項及其意義
選項 | 意義 |
---|---|
-c | 測試檔案是否已經被排序 |
-k | 指定排序的域 |
-m | 合併兩個已排序的檔案 |
-n | 根據數字大小進行排序 |
-o[輸出檔案] | 將輸出寫到指定的檔案,相當於將輸出重定向到指定檔案 |
-r | 將排序結果逆向展示 |
-t | 改變域分隔符 |
-u | 去除結果中的重複行 |
1.-k引數
sort命令預設情況下是按第1域進行排序的,也可以按指定某個域進行排序,-k選項就是用於指定域的。sort命令以1表示第1域、以2表示第2域,以此類推。
eg:初始資料為:
對第一域進行排序
sort -k1 20191307.txt
結果為:
對第二域進行排序(由於第二域資料為數字,所以要加上引數-n)
sort -n -k2 20191307.txt
結果為
2.-n引數
-n選項可以指定根據數字大小進行排序。
sort -nk3 20191307.txt
3.-r引數
-r選項用於將排序結果逆向顯示
sort -nrk3 20191307.txt
4.-u引數
-u選項用於去除排序結果中的重複行,若在檔案中插入幾行重複的資料,排序後重複數據會被去除。
如圖:
sort -nk3 -u 20191307.txt
- 排序前資料
排序後:
5.-o引數
sort命令預設將排序後的結果輸出到螢幕上,如果需要將結果儲存到另一個檔案中,我們可以使用-o選項加上檔名來完成。
sort -nk3 -u 20191307.txt -o sort.txt
如圖,在當前資料夾中生成了相應檔案並排序好
6.-c引數
-c選項用於測試檔案是否已經排好序
可以看出sort檔案已經排序成功,20191307檔案依舊是亂序。
編寫sort虛擬碼
read(file) sort (data) close(file) sort (data) # include <stdio.h> int main(void) { int a[] = data; int n; //存放陣列a中元素的個數 int i; //比較的輪數 int j; //每輪比較的次數 int buf; //交換資料時用於存放中間資料 n = sizeof(a) / sizeof(a[0]); /*a[0]是int型, 佔4位元組, 所以總的位元組數除以4等於元素的個數*/ for (i=0; i<n-1; ++i) //比較n-1輪 { for (j=0; j<n-1-i; ++j) //每輪比較n-1-i次, { if (a[j] < a[j+1]) { buf = a[j]; a[j] = a[j+1]; a[j+1] = buf; } } } for (i=0; i<n; ++i) { printf("%d\x20", a[i]); } printf("\n"); return 0; }