sort
功能說明:將文本文件內容加以排序,sort可針對文本文件的內容,以行為單位來排序。
sort [-bcdfimMnr][-o<輸出文件>][-t<分隔字符>][+<起始欄位>-<結束欄位>][--help][--verison][文件]
-b 忽略每行前面開始處的空格字符 。
-c 檢查文件是否已經按照順序排序。
-d 排序時,處理英文字母、數字及空格字符外,忽略其他的字符。
-f 排序時,將小寫字母視為大寫字母。
-i 排序時,除了040至176之間的ASCII字符外,忽略其他的字符。
-m 將幾個排序好的文件進行合並。
-M 將前面3個字母依照月份的縮寫進行排序。
-n 依照數值的大小排序。
-o<輸出文件> 將排序后的結果存入指定的文件。
-r 以相反的順序來排序。
-t<分隔字符> 指定排序時所用的欄位分隔字符。
-k 選擇以哪個區間進行排序
+<起始欄位>-<結束欄位> 以指定的欄位來排序,范圍由起始欄位到結束欄位的前一欄位。
-u 在輸出行中去除重復行。
sort將文件的每一行作為一個單位,相互比較,比較原則是從首字符向后,依次按ASCII碼值進行比較,最后將他們按升序輸出。
舉例:
ls -l|sort -n -k5
-n 表示以數值排序
-k5 表示以第幾列排序
還可以用 -t參數指定行內容的分隔符
源文件:
|
默認排序:
|
-u 在輸出行中去除重復行。
|
-o 把排序結果輸出到原文件中 使用重定向:sort test.txt>test.txt 后, test.txt為空 sort test.txt -o test.txt |
-c 檢查文件是否已經按照順序排序 sort -c 排好序的文件,無返回信息, echo $?為0 sort -c 未排序文件,有提示信息, echo $?為1 |
-n 依照數值的大小排序, sort 默認情況下會將數字按照字符串來排序, 所以會出現2比10大的情況。 使用-n能避免該情況:sort -n test.txt
|
-t<分隔字符> 指定排序時所用的欄位分隔字符, -k 選擇以哪個區間進行排序 cat date.txt sort -n -k 2 -t'-' date.txt
|
其他舉例:
sort -t ' ' -k 3nr -k 2n facebook.txt
先以第3個域進行逆序排序,如果相同,再以第2個域進行排序,n 依照數值的大小排序。
后續學習可參考:http://blog.chinaunix.net/uid-10540984-id-313479.html
uniq
[-cdu][-f<欄位>][-s<字符位置>][-w<字符位置>][--help][--version][輸入文件][輸出文件]
-u或--unique 只保留出現唯一一次的行列。
-d或--repeated 僅顯示重復出現的行列,出現一次的行列不會顯示
-c 在每列旁邊顯示該行重復出現的次數。
-f n 或--skip-fields=n 忽略前N個字段。字段由空白字符(空格符、Tab)分隔
-s<字符位置>或--skip-chars=<字符位置> 忽略比較指定的字符。-s n:忽略前n個字符,從n+1個字符開始比較
-w<字符位置>或--check-chars=<字符位置> 指定要比較的字符。-w n:只比較前n個字符,對每行第n個字符以后的內容不作對照
-i, --ignore-
case
在比較的時候不區分大小寫
[輸入文件] 指定已排序好的文本文件。如果不指定此項,則從標准讀取數據;
[輸出文件] 指定輸出的文件。如果不指定此選項,則將內容顯示到標准輸出設備(顯示終端)。
uniq 是對排序好的內容去重當重復的行並不相鄰時,uniq 命令是不起作用的,所以需要先使用sort排序,在使用uniq去重
舉栗:
原文件
|
uniq -c test_uniq.txt
|
-u 僅顯示出現一次的行 ,不顯示出現多次的行 uniq -u -c test_uniq.txt
|
|||
僅顯示重復出現的行 -d uniq -d -c test_uniq.txt
不顯示只出現一次的行 |
-i 比較的時候不區分大小寫 ,不區分大小寫,所以有三行進行的合並 uniq -i -c test_uniq.txt
|
||||
比較時忽略前n個字段,從n+1列開始比較 -f n uniq -c -f 3 test_uniq.txt
忽略前2個字段時,前2個字段中的字符以及空格不同都不會有影響, 但是第2個字段之后的空格與字符變化會影響去重效果 |
比較時忽略前n個字符,從n+1個字符開始比較 -s n uniq -c -s 1 test_uniq.txt
忽略前1個字符,第4,5,6,行會被認為是一樣的 |
||||
只比較前n個字符,對每行第n個字符以后的內容不作對照 -w n uniq -c -w 1 test_uniq.txt
|
指定輸出文件 uniq -c test_uniq.txt out.txt
|