1 sort的格式
sort [options] [files]
sort 引數 檔案
2 引數 -t 用單個符char作為預設的字段分隔符, 預設字段分隔符是空白
引數-k 用來定義排序鍵值字段
一般是 -t分割好欄位, 再在字段中
原始資料t:說明原資料 按:分段
k1 說明指定欄位1, 鍵值會從該字段的開始, 一直到字段結束而非字段的結尾。(也就是範圍很大咯)
排序1 這種排序沒看出是做什麼用的
sort -t: -k1 /etc/passwd排序2 k用逗號修飾, 表示排序鍵值由第乙個字段值的開始出開始, 結束於第二個欄位的結尾位置這裡1,1 是說鍵值用第乙個字段表示
sort -t: -k1,1 /etc/passwd和上面的結果沒差別,但理論上不同
排序3 指定鍵值為第三段,並按數字比較,然後倒敘
sort -t: -k3,3nr /etc/passwdk的修飾符 n 表示按照數字(整數)比較
k的修改符 r 表示按照倒置排序
排序 4 先按字段4的整數排序, 再按字段3 的整數排序
通過寫兩個 -k 欄位號,欄位號n來實現
sort -t: -k4,4n -k3,3n /etc/passwd比對這3組可以看出是先看第四字段排序了, 再按第三欄位排
排序 5 只輸出位置的排序記錄,有點拗口, 就是比對的鍵值重複出現
sort -t: -k4,4n -u /etc/passwd比如這個時候就沒有兩行都帶7的了。
排序6 文字塊排序
位址和清單, 多行文字當做乙個資料塊的文字塊排序
使用awk gsub配合rs變數(輸入資料記錄分隔符) ors變數(輸出資料記錄分隔符)處理
比如想按這三段來排序
rs=""把記錄按空行隔開
gsub()函式, 能把"\n" 替換成 「^z」 這樣輸入的問題就被處理了, 接下來只要排序這三行, 最後還原被替換的資料就可以了。
用sort -f不區分字母大小的排序
'在行和行之間加\n換回原來的格式
ors=「\n\n」 保持用空白行分割輸出記錄, 如果只寫乙個"\n" 效果就作文一樣的 ,一行一行沒分割的效果。
冒泡 插入 快排少量資料時處理速度都還好,大資料時幾乎是n^2
sort排序執行時間和記錄的數量成正比, 有被優化調整, 可以省下學排序演算法的時間。
穩定性:相同的記錄輸入順序,是否在輸出是也可以保持原狀, sort這方面不穩定, 要加--statble彌補
7 sort的刪除重複操作:
配合uniq -c 計數唯一的, 顯示重複的次數
sort原始資料:do.txt |uniq -c
用uniq -c的
顯示重複的字段
sort-d的功能:只顯示重複的資料do.txt |uniq -d
顯示未重複的字段
sort-u的功能:顯示未重複的資料do.txt |uniq -u
shell 指令碼學習
case var in pattern statement esac case 的指令碼語法是雙分號結尾的。sed e s i.86 i386 查詢替換。sed 流編輯器 將輸入流中的i.86替換成i386。是個萬用字元。輸入流的形式可能是 管道,檔案。shell d mkdir p 指令碼的條件執...
shell指令碼學習
shell 學習 1.shell 解釋型語言,有很多種直譯器。預設是 bin bash。shell指令碼第一行要寫 bin bash 2.shell指令碼執行的方法 1 sh sh 2 chmod a x sh sh 注意,一定要寫成.sh,而不是 sh。執行其它二進位制的程式也一樣,直接寫 sh,...
shell指令碼學習
反引號 反引號是命令替換,命令替換是指shell可以先執行中的命令,將輸出結果暫時儲存,在適當的地方輸出。語法 command 反引號是tab鍵的上乙個按鍵 重定向 如果檔案不存在,將建立新的檔案,並將資料送至此檔案 如果檔案存在,則將資料新增在檔案後面 如果檔案不存在,同上,如果檔案存在,先將檔案...