亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

在命令行用 sort 進行排序的方法

2024-07-21 02:03:10
字體:
來源:轉載
供稿:網友

Linux sort命令用于將文本文件內容加以排序。

sort可針對文本文件的內容,以行為單位來排序。

在 Linux、BSD 或 Mac 的終端中使用 sort 命令,按自己的需求重新整理數據。

如果你曾經用過數據表應用程序,你就會知道可以按列的內容對行進行排序。例如,如果你有一個費用列表,你可能希望對它們進行按日期或價格升序抑或按類別進行排序。如果你熟悉終端的使用,你不會僅為了排序文本數據就去使用龐大的辦公軟件。這正是 sort 命令的用處。

安裝

你不必安裝 sort ,因為它向來都包含在 POSIX 系統里。在大多數 Linux 系統中,sort 命令來自 GNU 組織打包的實用工具集合中。在其他的 POSIX 系統中,像 BSD 和 Mac,默認的 sort 命令不是 GNU 提供的,所以有一些選項可能不一樣。本文中我盡量對 GNU 和 BSD 兩者的實現都進行說明。

按字母順序排列行

sort 命令默認會讀取文件每行的第一個字符并對每行按字母升序排序后輸出。兩行中的第一個字符相同的情況下,對下一個字符進行對比。例如:

$ cat distro.listSlackwareFedoraRed Hat Enterprise LinuxUbuntuArch1337MintMageiaDebian$ sort distro.list1337ArchDebianFedoraMageiaMintRed Hat Enterprise LinuxSlackwareUbuntu

使用 sort 不會改變原文件。sort 僅起到過濾的作用,所以如果你希望按排序后的格式保存數據,你需要用 > 或 tee 進行重定向。

$ sort distro.list | tee distro.sorted1337ArchDebian[...]$ cat distro.sorted1337ArchDebian[...]

按列排序

復雜數據集有時候不止需要對每行的第一個字符進行排序。例如,假設有一個動物列表,每個都有其種和屬,用可預見的分隔符分隔每一個“字段”(即數據表中的“單元格”)。這類由數據表導出的格式很常見,CSV(以逗號分隔的數據comma-separated values)后綴可以標識這些文件(雖然 CSV 文件不一定用逗號分隔,有分隔符的文件也不一定用 CSV 后綴)。以下數據作為示例:

Aptenodytes;forsteri;Miller,JF;1778;EmperorPygoscelis;papua;Wagler;1832;GentooEudyptula;minor;Bonaparte;1867;Little BlueSpheniscus;demersus;Brisson;1760;AfricanMegadyptes;antipodes;Milne-Edwards;1880;Yellow-eyedEudyptes;chrysocome;Viellot;1816;Southern RockhopperTorvaldis;linux;Ewing,L;1996;Tux

對于這組示例數據,你可以用 --field-separator (在 BSD 和 Mac 用 -t,在 GNU 上也可以用簡寫 -t )設置分隔符為分號(因為該示例數據中是用分號而不是逗號,理論上分隔符可以是任意字符),用 --key(在 BSD 和 Mac 上用 -k,在 GNU 上也可以用簡寫 -k)選項指定哪個字段被排序。例如,對每行第二個字段進行排序(計數以 1 開頭而不是 0):

sort --field-separator=";" --key=2Megadyptes;antipodes;Milne-Edwards;1880;Yellow-eyedEudyptes;chrysocome;Viellot;1816;Sothern RockhopperSpheniscus;demersus;Brisson;1760;AfricanAptenodytes;forsteri;Miller,JF;1778;EmperorTorvaldis;linux;Ewing,L;1996;TuxEudyptula;minor;Bonaparte;1867;Little BluePygoscelis;papua;Wagler;1832;Gentoo

結果有點不容易讀,但是 Unix 以構造命令的管道方式而聞名,所以你可以使用 column 命令美化輸出結果。使用 GNU column:

$ sort --field-separator=";" //--key=2 penguins.list | column --table --separator ";"Megadyptes  antipodes  Milne-Edwards 1880 Yellow-eyedEudyptes   chrysocome Viellot    1816 Southern RockhopperSpheniscus  demersus  Brisson    1760 AfricanAptenodytes forsteri  Miller,JF   1778 EmperorTorvaldis  linux    Ewing,L    1996 TuxEudyptula  minor    Bonaparte   1867 Little BluePygoscelis  papua    Wagler     1832 Gentoo

對于初學者可能有點不好理解(但是寫起來簡單),BSD 和 Mac 上的命令選項:

$ sort -t ";" /-k2 penguins.list | column -t -s ";"Megadyptes  antipodes  Milne-Edwards 1880 Yellow-eyedEudyptes   chrysocome Viellot    1816 Southern RockhopperSpheniscus  demersus  Brisson    1760 AfricanAptenodytes forsteri  Miller,JF   1778 EmperorTorvaldis  linux    Ewing,L    1996 TuxEudyptula  minor    Bonaparte   1867 Little BluePygoscelis  papua    Wagler     1832 Gentoo

當然 -k 不一定非要設為 2。任意存在的字段都可以被設為排序的鍵。

逆序排列

你可以用 --reverse(BSD/Mac 上用 -r,GNU 上也可以用簡寫 -r)選項來顛倒已經排好序的列表。

$ sort --reverse alphabet.listzyxw[...]

你也可以把輸出結果通過管道傳給命令 tac 來實現相同的效果。

按月排序(僅 GNU 支持)

理想情況下,所有人都按照 ISO 8601 標準來寫日期:年、月、日。這是一種合乎邏輯的指定精確日期的方法,也可以很容易地被計算機理解。也有很多情況下,人類用其他的方式標注日期,包括用很名字隨意的月份。

幸運的是,GNU sort 命令能識別這種寫法,并可以按月份的名稱正確排序。使用 --month-sort(-M)選項:

$ cat month.listNovemberOctoberSeptemberApril[...]$ sort --month-sort month.listJanuaryFebruaryMarchAprilMay[...]NovemberDecember

月份的全稱和簡寫都可以被識別。

人類可讀的數字排序(僅 GNU 支持)

另一個人類和計算機的常見混淆點是數字的組合。例如,人類通常把 “1024 kilobytes” 寫成 “1KB”,因為人類解析 “1 KB” 比 “1024” 要容易且更快(數字越大,這種差異越明顯)。對于計算機來說,一個 9 KB 的字符串要比諸如 1 MB 的字符串大(盡管 9 KB 是 1 MB 很小一部分)。GNU sort 命令提供了--human-numeric-sort(-h)選項來幫助正確解析這些值。

$ cat sizes.list2M12MB1k9k9007000$ sort --human-numeric-sort90070001k9k2M12MB

有一些情況例外。例如,“16000 bytes” 比 “1 KB” 大,但是 sort 識別不了。

$ cat sizes0.list2M12MB160001k$ sort -h sizes0.list160001k2M12MB

邏輯上來說,這個示例中 16000 應該寫成 16 KB,所以也不應該全部歸咎于GNU sort。只要你確保數字的一致性,--human-numeric-sort 可以用一種計算機友好的方式解析成人類可讀的數字。

隨機排序(僅 GNU 支持)

有時候工具也提供了一些與設計初衷相悖的選項。某種程度上說,sort 命令提供對一個文件進行隨機排序的能力沒有任何意義。這個命令的工作流讓這個特性變得很方便。你可以用其他的命令,像 shuf ,或者你可以用現在的命令添加一個選項。不管你認為它是一個臃腫的還是極具創造力的用戶體驗設計,GNU sort 命令提供了對文件進行隨機排序的功能。

最純粹的隨機排序格式選項是 --random-sort 或 -R(不要跟 -r 混淆,-r 是 --reverse 的簡寫)。

$ sort --random-sort alphabet.listdmpa[...]

每次對文件運行隨機排序都會有不同的結果。

結語

GNU 和 BSD 的 sort 命令還有很多功能,所以花點時間去了解這些選項。你會驚異于 sort 的靈活性,尤其是當它和其他的 Unix 工具一起使用時。

總結

以上所述是小編給大家介紹的在命令行用 sort 進行排序的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久亚洲影音av资源网| 岛国av在线不卡| 国产在线观看精品| 国产精品久久国产精品99gif| 午夜精品一区二区三区在线| 欧美精品激情blacked18| 精品呦交小u女在线| 亚洲精品v欧美精品v日韩精品| 亚洲国产天堂久久综合网| 久久久久久综合网天天| 亚洲精品中文字幕有码专区| 午夜精品久久久久久久白皮肤| 日韩电影免费观看在线| 91精品啪在线观看麻豆免费| 精品国产一区二区三区久久久| 九九精品在线播放| 国产欧美va欧美va香蕉在| 91免费综合在线| 九九热最新视频//这里只有精品| 国产精品丝袜白浆摸在线| 国产亚洲精品成人av久久ww| 欧美与黑人午夜性猛交久久久| 中文字幕国产亚洲| 成人h视频在线观看播放| 成人h猎奇视频网站| 国外日韩电影在线观看| 亚洲第一福利网| 亚洲精品自拍第一页| 亚洲精品久久久久久久久久久久久| 久久视频在线视频| 亚洲一区二区在线| 国产精品视频网站| 欧美有码在线观看| 日韩av在线影院| 日韩国产在线播放| 欧美影院久久久| 国产欧美 在线欧美| 国产日韩欧美中文| 亚洲电影免费观看高清完整版在线观看| 欧美黄网免费在线观看| 欧美日韩福利视频| 亚洲aaaaaa| 欧美超级乱淫片喷水| 日本韩国欧美精品大片卡二| 欧美精品videos另类日本| 欧美日韩国产精品一区二区不卡中文| 91久久久久久久久久| 日韩精品丝袜在线| 久久精品久久精品亚洲人| 色综合视频一区中文字幕| 日韩国产激情在线| 国产欧美日韩精品专区| 亚洲国产日韩欧美在线图片| 国产不卡精品视男人的天堂| 亚洲精品永久免费| 久久精品国产亚洲一区二区| 91久久夜色精品国产网站| 亚洲午夜色婷婷在线| 韩国19禁主播vip福利视频| 国产精品一二三视频| 亚洲激情视频在线观看| 久久影院模特热| 超碰精品一区二区三区乱码| 97视频在线观看亚洲| 国产精品视频999| 亚洲第一视频网| 亚洲一区二区三区乱码aⅴ| 日韩高清欧美高清| 国产欧美精品一区二区三区介绍| 粉嫩av一区二区三区免费野| 国产精品ⅴa在线观看h| 红桃视频成人在线观看| 亚洲国语精品自产拍在线观看| 亚洲人成电影在线| 亚洲欧美一区二区三区久久| 亚洲国产日韩欧美在线99| 欧美日韩国产精品一区二区三区四区| 亚洲国产精彩中文乱码av在线播放| 国产精品ⅴa在线观看h| 亚洲性av在线| 国产日本欧美一区二区三区在线| 成人黄色短视频在线观看| 97香蕉超级碰碰久久免费软件| 精品福利免费观看| 国产精品美腿一区在线看| 亚洲黄色免费三级| 精品视频在线播放| 欧美极品欧美精品欧美视频| 国产午夜精品一区理论片飘花| 成人xvideos免费视频| 成人日韩在线电影| 成人免费高清完整版在线观看| 草民午夜欧美限制a级福利片| 国产亚洲激情视频在线| 国产精品久久久久福利| 亚洲va国产va天堂va久久| 国产精品久久久久久久av大片| 亚洲电影av在线| 精品国产区一区二区三区在线观看| 欧美日韩国产在线看| 欧美日韩一区二区在线播放| 国产99久久久欧美黑人| 国产精品亚洲аv天堂网| 96sao精品视频在线观看| 亚洲色图激情小说| 中文字幕国产日韩| 欧美电影在线观看网站| 日本久久精品视频| 日韩国产中文字幕| 亚洲一区二区三区香蕉| 97精品视频在线观看| 色婷婷亚洲mv天堂mv在影片| 亚洲影院色在线观看免费| 亚洲乱亚洲乱妇无码| 日韩精品免费在线视频观看| 国产a级全部精品| 国产精品中文字幕在线观看| 成人黄色av播放免费| 国精产品一区一区三区有限在线| 91久久夜色精品国产网站| 热99在线视频| 欧美精品激情blacked18| 中文字幕一区电影| 久久99久国产精品黄毛片入口| 自拍亚洲一区欧美另类| 国产精品免费一区二区三区都可以| 国产97在线播放| 欧美成人性色生活仑片| 久久露脸国产精品| 精品一区二区三区三区| 欧美高清视频在线播放| 日韩免费观看高清| 欧美孕妇毛茸茸xxxx| 亚洲偷欧美偷国内偷| 亚洲欧美日本伦理| 色老头一区二区三区在线观看| 一区二区三区在线播放欧美| 欧美日韩成人免费| 国产精品成人aaaaa网站| 亚洲男人天堂久| 亚洲影视中文字幕| 国产成人综合av| 最好看的2019的中文字幕视频| 欧美成人国产va精品日本一级| 久久777国产线看观看精品| 国内自拍欧美激情| 欧美黑人一区二区三区| 91久久久国产精品| 日韩成人在线视频观看| 奇米成人av国产一区二区三区| 亚洲成人av在线| 欧美超级乱淫片喷水| 欧美极品少妇xxxxⅹ免费视频| 国产69精品久久久久9| 日韩在线免费高清视频| 海角国产乱辈乱精品视频| 国产一区二区久久精品| 国产99久久精品一区二区永久免费| 在线播放日韩专区| 91九色国产视频| 亚州av一区二区| 亚洲国产成人在线播放| 久久国产精品偷| 亚洲精品美女网站|