檔案排序:
sort命令是幫我們根據不同的資料型別進行排序。其語法及經常使用引數格式:
sort [選項][輸入檔案]
參 數:
-b 忽略每行前面開始出的空格字元。
-c 檢查檔案是否已經依照順序排序。
-f 排序時。忽略大寫和小寫字母。
-m 將前面3個字母按照月份的縮寫進行排序。
-n 按照數值的大小排序。
-o《輸出檔案》 將排序後的結果存入指定的檔案。
-r 以相反的順序來排序。
-t《分隔字元》 指定排序時所用的字段分隔字元。
-k 選擇以哪個區間進行排序
編寫cargo.db檔案
china:121:232:ne3453
usa:434:435:ss343
hongkong:2323:343:ko32
china:9034:234:hu423
china:9032:5443:ij232
1.以預設方式排序:
[root@iz2546h6zurz test]# sort -t: cargo.db
china:121:232:ne3453
china:9032:5443:ij232
china:9034:234:hu423
hongkong:2323:343:ko32
usa:434:435:ss343
當中使用-t改動分隔符為:
2.指定依照某個域進行排序(-k)
[root@iz2546h6zurz test]# sort -t: -k2 cargo.db
china:121:232:ne3453
hongkong:2323:343:ko32
usa:434:435:ss343
china:9032:5443:ij232
china:9034:234:hu423
以上排序不能依照數字進行排序
3.依照數字大小排序(-n)
[root@iz2546h6zurz test]# sort -t: -k2n cargo.db
china:121:232:ne3453
usa:434:435:ss343
hongkong:2323:343:ko32
china:9032:5443:ij232
china:9034:234:hu423
4.將排序後的檔案重定向到還有乙個檔案裡(-o)
[root@iz2546h6zurz test]# sort -t: -k2n -o cargo2.db cargo.db
5.awk和sort結合使用
編輯檔案location.db
bei jing
qwwq
fdfdfdfa
ji nan
sfdfs
dfdfdsfd
cheng du
gfgadf
fsdfwdfw
hang zhou
fsdfsf
fsdgsd
按塊進行排序
[root@iz2546h6zurz test]# cat location.db |awk -v rs="" '' | sort | awk -v ors="\n\n" ''
bei jing
qwwq
fdfdfdfa
cheng du
gfgadf
fsdfwdfw
hang zhou
fsdfsf
fsdgsd
ji nan
sfdfs
dfdfdsfd
當中awk -v 就是begin塊
rs表示記錄的切割符;ors表示輸出分隔符
6.去除反覆行
uniq命令
編輯檔案location2.db
hahahah
hahahah
lcqhello
hahahah
lcqworld
[root@iz2546h6zurz test]# uniq location2.db
hahahah
lcqhello
hahahah
lcqworld
[root@iz2546h6zurz test]# sort -u location2.db
hahahah
hello
lcqworld
uniq命令去除相鄰的反覆行,sort -u去除後面全部的反覆行。
7.記錄連線命令join,保證兩個檔案是有序的
編輯檔案
stu2.db
lcq:stu:hahah
sgf:stu:dsiwew
xm:stu:2e2ds
檔案stu2_body.db
lcq:fsdfs
sgf:fvbdfgdgfgfgf
xm:fsdfsd
[root@iz2546h6zurz test]# join -t: stu2.db stu2_body.db
lcq:stu:hahah:fsdfs
sgf:stu:dsiwew:fvbdfgdgfgfgf
xm:stu:2e2ds:fsdfsd
8. cut命令按域或者行提取文字
[root@iz2546h6zurz test]# cut -d: -f1,2 stu2.db
lcq:stu
sgf:stu
xm:stu
當中-d改變域分隔符,-f指定提取的域
9.壓縮檔案和解壓檔案
[root@iz2546h6zurz test]# tar -cf stu.all stu*
將stu開頭的檔案壓縮為stu.all
解壓檔案
[root@iz2546h6zurz test]# tar -xvf stu.all
以上是解壓非gzip檔案
[root@iz2546h6zurz test]# gzip stu.all
將stu.all壓縮為stu.all.gz
[root@iz2546h6zurz test]# tar -zxvf stu.all.gz
stu2_body.db
stu2.db
stu_body.db
stu.db
加上-z解壓gzip檔案
排序 合併排序
與很多有用的演算法類似,合併排序基於這樣乙個技巧 將 2 個大小為 n 2 的已排序序列合併為乙個 n 元素已排序序列僅需要 n 次操作。這個方法叫做合併。我們用個簡單的例子來看看這是什麼意思 通過此圖你可以看到,在 2 個 4元素序列裡你只需要迭代一次,就能構建最終的8元素已排序序列,因為兩個4元...
排序演算法 合併排序
這個排序比起冒泡,選擇什麼的就快很多了,時間複雜度是n logn,但是實現起來也很複雜。原理是 第一步,合併1 2 3 4 5 6.相鄰兩個排序 第二步,合併1 2 3 4 5 6 7 8 9.相鄰四個排序 實現起來最主要的是合併的函式,廢話不多說,看 class mergersorter priv...
排序演算法 合併排序
說明 之前所介紹的排序法都是在同乙個陣列中的排序,考慮今日有兩筆或兩筆以上的資料,它可能是不同陣列中的資料,或是不同檔案中的資料,如何為它們進行排序?解法 可以使用合併排序法,合併排序法基本是將兩筆已排序的資料合併並進行排序,如果所讀入的資料尚未排序,可以先利用其它的排序方式來處理這兩筆資料,然後再...