當前位置:編程學習大全網 - 源碼下載 - 每天壹個linux命令(1)sort

每天壹個linux命令(1)sort

sort 是將文件的每壹行作為壹個單位,相互比較,比較原則是從首字符向後,依次按照ASCII碼值進行比較,默認將他們按照升序輸出

降序

在輸出中去重

將排序結果輸出到原文件

sort的默認輸出是輸出到標準輸出,如果想把結果輸出到文件,需要 sort file > newfile,但是如果想把結果輸出到原文件這樣就不行了,這時就需要 使用sort -o

以數值來排序

sort 默認是按照字符串排序的,這樣就會出現10比3小的情況,sort -n 就可以告訴sort 以整數排序

-t 後面跟 分隔符

-k 後面跟數字,表示用第幾列排序

如 sort -t : -k 2 表示把每行 以:號分割,按照第二列排序

banana:30:5.5

orange:20:3.4

apple:10:2.5

我們可以看到,當baidu 和soho都是100的時候,baidu排在前面,當當前域按照默認規矩,是從第壹個域開始進行升序排序,因此baidu排在了sohu前面。

sort 支持 -k 2 -k3這種模式,如果妳需要,妳可以繼續這麽寫下去

妳仔細看看,在-k 3後面偷偷加上了壹個小寫字母r,r和-r的作用是壹樣,妳也可以把前面的-n去掉 在r後面加上n,如下

其實-k 選項 功能很強大,語法[ FStart [ .CStart ] ] [ Modifier ] [ , [ FEnd [ .CEnd ] ][ Modifier ] ]

從逗號前後 分為兩大部分,即-k 2,2,是嚴格使用第壹個域排序,如果只設置-k 2 其實是按照從第壹個域到行尾。逗號分開的每部分又有壹個點表示子域,即-k 1.2表示 按照第壹個域的第二個字符排序,Modifiers就是我們用到的n和r 如 -k 1.2nr 具體我們看下面的例子。

我們使用了-k 1.2,這就表示對第壹個域的第二個字符開始到本域的最後壹個字符為止的字符串進行排序。妳會發現baidu因為第二個字母是a而名列榜首。sohu和 google第二個字符都是o,但sohu的h在google的o前面,所以兩者分別排在第二和第三。這和之前說到的按照默認的排序規則 是不同的,當第壹個域的第二個字符相同時,他不會去按照第壹個字符排序,而是按照後面的字符排序,這是因為-k 1.2是對第壹個域的第二個字符開始到本域的最後壹個字符為止的字符串進行排序。而之前的誇域其實是壹種假象。

-u只識別用-k設定的域,發現相同,就將後續相同的行都刪除

但是這時候,卻壹行也沒有刪除。原來-u是會權衡所有-k選項,將都相同的才會刪除,只要其中有壹級不同都不會輕易刪除的

可以用到b、d、f、i、n 或 r。

其中n和r妳肯定已經很熟悉了。

b表示忽略本域的簽到空白符號。

d表示對本域按照字典順序排序(即,只考慮空白和字母)。

f表示對本域忽略大小寫進行排序。

i表示忽略“不可打印字符”,只針對可打印字符進行排序。(有些ASCII就是不可打印字符,比如\a是報警,\b是退格,\n是換行,\r是回車等等)

  • 上一篇:如何開發嵌入式系統 arm7 at91sam7x lwip
  • 下一篇:新浪微博內容采取什麽方式加載的
  • copyright 2024編程學習大全網