1. 程式人生 > >Linux中sort命令

Linux中sort命令

Linux sort命令用於將文字檔案內容按某種方式排序,預設是ASCII碼方式:

語法說明:

  • sort[-bcdfimMnur][-o<輸出檔案>][-t<分隔字元>][-k<n,m>][檔案]

常用引數:

  • -b 忽略每行前面開始出的空格字元。
  • -c 檢查檔案是否已經按照順序排序。
  • -d 排序時,處理英文字母、數字及空格字元外,忽略其他的字元。
  • -f 排序時,將小寫字母視為大寫字母。
  • -i 排序時,除了040至176之間的ASCII字元外,忽略其他的字元。
  • -m 將幾個排序好的檔案進行合併。
  • -M 將前面3個字母依照月份的縮寫進行排序。
  • -n 依照數值的大小排序。
  • -o<輸出檔案> 將排序後的結果存入指定的檔案。
  • -u 排除重複項
  • -r 以相反的順序來排序。
  • -t<分隔字元> 指定排序時所用的欄位分隔字元。
  • --help 顯示幫助。
  • --version 顯示版本資訊。
  • -k[n[,m]]指定一個或幾個欄位作為排序關鍵字,欄位位置從n開始,到m為止(包括n,不包括m)。如不指定m,則關鍵字為從n到行尾。欄位和字元的位置從0開始,第一列為1。
常用例子:(整理了最有代表行的13個例子)
  • 01.對file檔案,按照ASCII排序
[[email protected] ~]# cat file
Unix
Linux
Solaris
AIX
Linux
HPUX
[[email protected]
~]# sort file #預設按照ascii排序 AIX HPUX Linux Linux Solaris Unix
  • 02.對file檔案排序,並移除重複項
[[email protected] ~]# cat file
Unix
Linux
Solaris
AIX
Linux
HPUX
[[email protected] ~]# sort -u file    #排除重複行
AIX
HPUX
Linux
Solaris
Unix
  • 03.對file檔案,按一般排序
[[email protected] ~]# cat file
20
19
5
49
200
[[email protected]
~]# sort file #一般排序 19 20 200 49 5 #注意是首字母1..10來排序,這一般不是我們想要的.
  • 04.對file檔案,按數字自然順序來排序
[[email protected] ~]# cat file
20
19
5
49
200
#按數字自然順序來排序
[[email protected] ~]# sort -n file
5
19
20
49
200
  • 05.對file檔案,按數字自然順序倒排序
[[email protected] ~]# cat file
20
19
5
49
200
#按數字倒排序
[[email protected] ~]# sort -nr file
200
49
20
19
5
  • 06.對file1,file2兩個檔案,按數字倒排序,並移除其重複項,輸出到file3
[[email protected] ~]# cat file1
20
19
5
49
200
[[email protected] ~]# cat file2
25
25
18
5
48
200

#按照自然順序倒排序並移掉重複項
[[email protected] ~]# sort -nr -u file1 file2 -o file3
200
49
48
25
20
19
18
5
  • 07.對file檔案,按月份來排序
[[email protected] ~]# cat file
Aug 8 30
Jan 1 31
Mar 3 31
Feb 2 28
May 5 30
Jul 7 31
Jun 6 30
[[email protected] ~]# sort -M file
Jan 1 31
Feb 2 28
Mar 3 31
May 5 30
Jun 6 30
Jul 7 31
Aug 8 30
  • 08.對多域值檔案file,按第一列來排序
[[email protected] ~]# cat file
Linux,20
Unix,30
AIX,25
Linux,25
Solaris,10
HPUX,100
# -t',' 以逗號分隔,也可以用""
# -k1,1 Form Field 1 to Field 1, 常用的用法,也就是按第一列排序
[[email protected] ~]# sort -t',' -k1,1 file
AIX,25
HPUX,100
Linux,20
Linux,25
Solaris,10
Unix,30
  • 09.對多域值檔案file,按第二列自然數字排序並移除重複行
[[email protected] ~]# cat file
Linux,20
Unix,30
AIX,25
Linux,25
Solaris,10
HPUX,100
#-k2n 第二列按自然數排序
[[email protected] ~]# sort -t"," -k2n,2 -u file
Solaris,10
Linux,20
AIX,25
Linux,25
Unix,30
HPUX,100
#Linux,25這一行就會被移除
  • 10.對多域值檔案file,先按第一列排序,再按第二列自然數字倒序排列
[[email protected] ~]# cat file
Linux,20
Unix,30
AIX,25
Linux,25
Solaris,10
HPUX,100
#-k 1,1 也可以分開來寫
#-knr,2 也可以拆開來寫 -k2,2 -nr
[[email protected] ~]# sort -t',' -k1,1 -k2nr,2 file
AIX,25
HPUX,100
Linux,25
Linux,20
Solaris,10
Unix,30
  • 11.對多域值檔案file,先按第一列排序,再按第三列自然數字倒序排列
[[email protected] ~]# cat file
google 110 5000
baidu 100 5000
guge 50 3000
sohu 100 4500
#-t' ',預設是按空格,Tab鍵來排序,所以此處可以不要,只是為了好理解些
#-k 1.2,1.2 from 1 to 1,也就是按第一列來排序
#1.2表示第一列,第二個字元.  
#-k 3,3nr 第三列按自然數字倒序.注意其表現形式
[[email protected] ~] sort -t' ' -k 1.2,1.2 -k 3,3nr file
baidu 100 5000
google 110 5000
sohu 100 4500
guge 50 3000
  • 12.綜合管道命令,統計每個使用者的登陸總次數
#last取出所有使用者訪問列表,第一列為使用者名稱
[[email protected] ~] last
User   TTY  IP          TIME                   Duration                 
-------------------------------------------------------
root   tty1 192.168.0.1 Mon Aug 15 11:55 -17:48 (05:53)
root   tty1 192.168.0.1 Mon Aug 18 10:17 -11:54 (01:37)
...
#uniq -c 進行計數
#cut -d' ' -f1  按空格分割,取第一列,即取出使用者
[[email protected] ~] last | cut -d' ' -f1 | sort | uniq -c
  • 13.綜合管道命令,將兩個檔案中檔案合併,排序,移重複,並放到新檔案中
[[email protected] ~]# cat file1
20
19
5
49
200
[[email protected] ~]# cat file2
25
25
18
5
48
200
[[email protected] ~]# cat file1 file2 | sort -nr | uniq  > file3
[[email protected] ~]# cat file3
200
49
48
25
20
19
18
5
Note:
  • 預設是TAB,空格排序,所以空格,或TAB鍵分割的,可以不用-t引數
  • -t:和-t':',-t":"都是一樣的
  • sort -t: +1 -1 file #舊寫法,能看懂就行了等同於sort -t":" -k1,1
  • -k1,1預設寫法,即按第一列來排序 -k1.2,1.2按第一列第二個字元排序
  • -k1,1也可以直接用 -k 1 來表示按第一列來排序
  • sort經常是通過管道符|和uniq,cat,cut一起使用

綜合例子:

sort -n -k 6 -k 9 -t ',' file1 > file2
-n  按算術順序來排序
-k  指定一個或幾個欄位作為排序關鍵字,欄位位置從n開始,到m為止(包括n,不包括m)。
    如不指定m,則關鍵字為從n到行尾。
-t  存放臨時檔案的目錄
',' 以逗號為分割

相關推薦

linuxsort命令的使用

 sort的-o :將結果寫入原檔案  sort的-u :用來在輸出行中去除重複行。  sort的-r :sort預設的排序方式是升序,如果想改成降序,就加個-r。 sort的-n :以數值來排序 sort-t和sort-k:sort-t可以設定間隔符,之後,就可以用

Linuxsort命令

Linux sort命令用於將文字檔案內容按某種方式排序,預設是ASCII碼方式: 語法說明: sort[-bcdfimMnur][-o<輸出檔案>][-t<分隔字元>][-

Linux作業系統sort命令詳解

sort是在Linux系統中很常用的一個命令,其功能和單詞本意相同,就是做排序的,不管是平時手工維護Linux系統,還是寫指令碼,這個命令一定大有用處,這篇文章將詳細介紹sort命令的引數及其含義。 1. sort的工作原理:sort將檔案的每一行作為一個單位,相互比較,比較原則是從首字元向後,依次

Linux 常用命令

ln -s directory 沒有 開始 media 關機命令 範圍 後臺作業 解壓縮 命令基本格式: 命令提示符:[[email protected]/* */ ~]# root 代表當前的登錄用戶(linux當中管理員賬號是root)

Linuxawk命令的簡單用法

.cn inux total com mage 簡單 image 用法 int 一、用例1:   cat /proc/meminfo|grep "MemTotal"|awk ‘{print $2}‘   說明,$2表示第2位,$0表示全部,如需表示$,可用$$轉義。

linuxwc命令用法

字節 統計字符 -- 幫助信息 linux系統 count 沒有 標準 讀取 Linux系統中的wc(Word Count)命令的功能為統計指定文件中的字節數、字數、行數,並將統計結果顯示輸出。 1.命令格式: wc [選項]文件... 2.命令功能: 統計指定文件中的字節

linuxexpect命令詳解

linux運維expect介紹expect 是由Don Libes基於Tcl(Tool Command Language )語言開發的,主要應用於自動化交互式操作的場景,借助Expect處理交互的命令,可以將交互過程如:ssh登錄,ftp登錄等寫在一個腳本上,使之自動化完成。尤其適用於需要對多臺服務器執行相同

linuxtop命令

ont def comm 均值 code virt neutron load 共享 #top top命令的第一行“ top - 19:56:47 up 39 min, 3 users, load average: 0.00, 0.00,

Linuxdd命令的用法

dddd命令: convert and copy a file用法:dd?if=/PATH/FROM/SRC?of=/PATH/TO/DEST bs=#:?block?size,?復制單元大小 count=#:復制多少個bs of=file?寫到所命名的文件而不是到標準輸出 if=file?從所命名文件讀取而

linuxgrep命令

出行 red 文本搜索 grep命令 cin spa 組合 方式 小數 grep 是一種強大的文本搜索工具,它能使用正則表達式搜索文本,並把匹配的行打印出來。 grep常用用法 [root@www ~]# grep [-acinv] [--color=auto] ‘搜尋字

linuxwget命令

tags ogr don pan 還需 web 全部 remote 參數 Linux系統中的wget是一個下載文件的工具,它用在命令行下。對於Linux用戶是必不可少的工具,我們經常要下載一些軟件或從遠程服務器恢復備份到本地服務器。wget支持HTTP,HTTPS和FTP

Linux禁用命令歷史記錄

linux中 命令 -o 禁用 登錄 home hist history class 關閉history記錄功能 set +o history 打開history記錄功能 set -o history 清空記錄 history -c 記錄被清空,重新登錄後恢復。

Linuxsource命令的用法

立即生效 常常 new 重新登錄 核心 linu 用戶 成功 多次 source命令:   source命令也稱為“點命令”,也就是一個點符號(.)。source命令通常用於重新執行剛修改的初始化文件,使之立即生效,而不必註銷並重新登錄。因為lin

LinuxReadlink命令

.net padding order symbol 可執行文件 tro anon spa RM 原文地址:http://blog.csdn.net/liangxiaozhang/article/details/7356829 readlink是Linux系統中一個常用工具,

linux tr 命令的基礎運用

trtr命令可以看作是sed的簡化形式,可以用來替換刪除字符。tr - translate or delete characters常用的命令格式為:tr -c -d -s 字符1 字符2 <文件名 | -c | 用字符2替換字符1中不包含的字符(字符1補集) | -d | 刪除字符串1

linuxat命令詳解

at一次性計劃任務 at詳解 系統命令 at命令: 一:簡介: 計劃任務,在特定的時間執行某項工作,在特定的時間執行一次,需要安裝at服務,apt-get install at 二:時間定義: at允許使用一套相當復雜的指定時間的方法。● 能夠接受在當天的hh:mm(小時:分鐘)式的時間指定。假如

Linux sort、uniq、wc、cut 隨筆

inf 多少 單位 alt 相同 大小寫 文字 tab -c sort 命令 對 File 參數指定的文件中的行排序,並將結果寫到標準輸出。如果 File 參數指定多個文件,那麽 sort 命令將這些文件連接起來,並當作一個文件進行排序。 選項與參數:-f :忽略大小寫的

Linuxtouch命令使用(創建文件)

inf access -c -- modify 連續 技術分享 lin 路徑 touch命令有兩個功能: 1.用於把已存在文件的時間標簽更新為系統當前的時間(默認方式),它們的數據將原封不動地保留下來; 2.用來創建新的空文件。 語法 touch(選項)(參數) 選

Linux常用命令pipe

必須 強調 std 而且 ss命令 strong 目錄下的文件 文件 last 大多數linux命令處理數據後都會輸出到標準輸出,但是如果數據要經過系列列的步驟處理後,才是需要的數據個數,這種需求就需要管道來幫助完成。 管道命令使用"|"作為界定符,將界定符前的命令的執行結

linuxtar命令用法

log mco file 並且 unrar 過程 lin 文件名 壓縮歸檔 -c: 建立壓縮檔案-x:解壓-t:查看內容-r:向壓縮歸檔文件末尾追加文件-u:更新原壓縮包中的文件 這五個是獨立的命令,壓縮解壓都要用到其中一個,可以和別的命令連用但只能用其中一個。下面的參數是