十二. 行的排序指令sort:
1. sort指令行選項:
選項 | 描述 |
-t | 字段之間的分隔符 |
-f | 基于字元排序時忽略大小寫 |
-k | 定義排序的域字段,或者是基于域字段的部分資料進行排序 |
-m | 将已排序的輸入檔案,合并為一個排序後的輸出資料流 |
-n | 以整數類型比較字段 |
-o outfile | 将輸出寫到指定的檔案 |
-r | 倒置排序的順序為由大到小,正常排序為由小到大 |
-u | 隻有唯一的記錄,丢棄所有具有相同鍵值的記錄 |
-b | 忽略前面的空格 |
2. sort使用執行個體:
提示:在下面的輸出結果中紅色标注的為第一排序字段,後面的依次為紫、綠。
/> sed -n '1,5p' /etc/passwd > users
/> cat users
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
#-t 定義了冒号為域字段之間的分隔符,-k 2指定基于第二個字段正向排序(字段順序從1開始)。
/> sort -t':' -k 1 users
#還是以冒号為分隔符,這次是基于第三個域字段進行倒置排序。
/> sort -t':' -k 3r users
#先以第六個域的第2個字元到第4個字元進行正向排序,在基于第一個域進行反向排序。
/> sort -t':' -k 6.2,6.4 -k 1r users
#先以第六個域的第2個字元到第4個字元進行正向排序,在基于第一個域進行正向排序。和上一個例子比,第4和第5行交換了位置。
/> sort -t':' -k 6.2,6.4 -k 1 users
#基于第一個域的第2個字元排序
/> sort -t':' -k 1.2,1.2 users
#基于第六個域的第2個字元到第4個字元進行正向排序,-u指令要求在排序時删除鍵值重複的行。
/> sort -t':' -k 6.2,6.4 -u users
/> cat /etc/passwd | wc -l #計算該檔案中文本的行數。
39
/> sed -n '35,$p' /etc/passwd > users2 #取最後5行并輸出到users2中。
/> cat users2
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash
pulse:x:496:494:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
stephen:x:500:500:stephen:/home/stephen:/bin/bash
#基于第3個域字段以文本的形式排序
/> sort -t':' -k 3 users2
#基于第3個域字段以數字的形式排序
/> sort -t':' -k 3n users2
#基于目前系統執行程序的owner名排序,并将排序的結果寫入到result檔案中
/> ps -ef | sort -k 1 -o result
十三. 删除重複行的指令uniq:
uniq有3個最為常用的選項,見如下清單:
指令描述 | |
-c | 可在每個輸出行之前加上該行重複的次數 |
-d | 僅顯示重複的行 |
顯示為重複的行 |
/> cat testfile
hello
world
friend
#直接删除未經排序的檔案,将會發現沒有任何行被删除
/> uniq testfile
#排序之後删除了重複行,同時在行首位置輸出該行重複的次數
/> sort testfile | uniq -c
1 friend
3 hello
2 world
#僅顯示存在重複的行,并在行首顯示該行重複的次數
/> sort testfile | uniq -dc
#僅顯示沒有重複的行
/> sort testfile | uniq -u
friend
十四. 檔案壓縮解壓指令tar:
1. tar指令行選項
建立壓縮檔案 | |
-x | 解壓 |
--delete | 從壓縮包中删除已有檔案,如果該檔案在包中出現多次,該操作其将全部删除。 |
檢視壓縮包中的檔案清單 | |
向壓縮歸檔檔案末尾追加檔案 | |
更新原壓縮包中的檔案 | |
-z | 壓縮為gzip格式,或以gzip格式解壓 |
-j | 壓縮為bzip2格式,或以bzip2格式解壓 |
-v | 顯示壓縮或解壓的過程,該選項一般不适于背景操作 |
使用檔案名字,這個參數是最後一個參數,後面隻能接檔案名。 |
-l | 指定行數,每多少分隔成一個檔案,預設值為1000行。 |
指定位元組數,支援的機關為:k和m | |
-C | 與-b參數類似,但切割時盡量維持每行的完整性 |
生成檔案的字尾為數字,如果不指定該選項,預設為字母 |