檔案排序合併

2021-09-08 04:32:37 字數 3569 閱讀 1728

檔案排序:

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...

排序演算法 合併排序

說明 之前所介紹的排序法都是在同乙個陣列中的排序,考慮今日有兩筆或兩筆以上的資料,它可能是不同陣列中的資料,或是不同檔案中的資料,如何為它們進行排序?解法 可以使用合併排序法,合併排序法基本是將兩筆已排序的資料合併並進行排序,如果所讀入的資料尚未排序,可以先利用其它的排序方式來處理這兩筆資料,然後再...