文章目錄
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給出位置和類型
-
從公司英文名稱的第二個字母開始進行排序
先是指定空格將每行分爲三個域,使用了-k 1.2,表示對第一個域的第二個字符開始到本域的最後一個字符爲止的字符串進行排序。你會發現baidu因爲第二個字母是a而名列榜首。sohu和 google第二個字符都是o,但sohu的h在google的o前面,所以兩者分別排在第二和第三。guge只能屈居第四了。 -
只針對公司英文名稱的第二個字母進行排序,如果相同的按照員工工資進行降序排序
由於只對第二個字母進行排序,所以我們使用了-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)