sort

sort

NAME
       sort - sort lines of text files
       對文本文件裏面的行 進行排序

SYNOPSIS
       sort [OPTION]... [FILE]...
       sort [OPTION]... --files0-from=F

DESCRIPTION
       Write sorted concatenation of all FILE(s) to standard output.
       將所有文件的排序連接寫入標準輸出。

   With no FILE, or when FILE is -, read standard input.
   如果沒有文件,或者當文件爲-時,讀取標準輸入。

默認排序sort file

sort將文件/文本的每一行作爲一個單位,相互比較,比較原則是從首字符向後,依次按ASCII碼值進行比較,最後將他們按升序輸出。
先創建一個無序文本
在這裏插入圖片描述
對比
在這裏插入圖片描述

忽略文本里面的相同行 -u

  -u, --unique
          with -c, check for strict ordering; without -c, output only the first of an equal run

在這裏插入圖片描述
uniq sort.txt 也可以
在這裏插入圖片描述

指定排序時所用的欄位分隔字符-t -k

 -t, --field-separator=SEP
          use SEP instead of non-blank to blank transition
       
 -k, --key=KEYDEF
          sort via a key; KEYDEF gives location and type
          通過鍵排序;KEYDEF給出位置和類型

在這裏插入圖片描述

  1. 從公司英文名稱的第二個字母開始進行排序
    在這裏插入圖片描述
    先是指定空格將每行分爲三個域,使用了-k 1.2,表示對第一個域的第二個字符開始到本域的最後一個字符爲止的字符串進行排序。你會發現baidu因爲第二個字母是a而名列榜首。sohu和 google第二個字符都是o,但sohu的h在google的o前面,所以兩者分別排在第二和第三。guge只能屈居第四了。

  2. 只針對公司英文名稱的第二個字母進行排序,如果相同的按照員工工資進行降序排序

在這裏插入圖片描述
由於只對第二個字母進行排序,所以我們使用了-k 1.2,1.2的表示方式,表示我們“只”對第二個字母進行排序。
(如果你問“我使用-k 1.2怎麼不行?”,當然不行,因爲你省略了End部分,這就意味着你將對從第二個字母起到本域最後一個字符爲止的字符串進行排序)。
對於員工工資進行排 序,我們也使用了-k 3,3,這是最準確的表述,表示我們“只”對本域進行排序,因爲如果你省略了後面的3,就變成了我們“對第3個域開始到最後一個域位置的內容進行排序” 了。

將第二列按照數字從小到大順序排列 -n

   -n, --numeric-sort
              compare according to string numerical value
              根據字符串數值進行比較

先創建測試文本
在這裏插入圖片描述
在這裏插入圖片描述

和默認排序對比
測試文本
在這裏插入圖片描述
在這裏插入圖片描述
出現第一種情況是由於排序程序將這些數字按字符來排序了,排序程序會先比較第一個字符,再比較第二個字符。這也是sort的一貫作風。

將第二列按照數字從大到小順序排列(反序排序) -r

-r, --reverse
          reverse the result of comparisons

在這裏插入圖片描述

將排序結果寫入文件 -o

   -o, --output=FILE
          write result to FILE instead of standard output
          將結果寫入文件而不是標準輸出

在這裏插入圖片描述

   -b, --ignore-leading-blanks
          ignore leading blanks
          忽略主要空白

   -c, --check, --check=diagnose-first
          check for sorted input; do not sort

   -d, --dictionary-order
          consider only blanks and alphanumeric characters
          只考慮空格和字母數字字符

   -f, --ignore-case
          fold lower case to upper case characters
          將小寫字符摺疊爲大寫字符

   -g, --general-numeric-sort
          compare according to general numerical value

   -i, --ignore-nonprinting
          consider only printable characters

   -h, --human-numeric-sort
          compare human readable numbers (e.g., 2K 1G)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章