Linux 文本處理命令詳解(tr cut sort uniq)

一溪椎、tr 命令

tr (translate) 命令可以對(duì)來(lái)自標(biāo)準(zhǔn)輸入的字符進(jìn)行替換、壓縮和刪除操作罩抗。

語(yǔ)法
tr [option] string1 string2
選項(xiàng)

tr string1 string2 :將標(biāo)準(zhǔn)輸入中所有屬于 string1 的字符替換為 string2 中的字符
-d :刪除標(biāo)準(zhǔn)輸入中所有屬于 string1 的字符
-s :把標(biāo)準(zhǔn)輸入中連續(xù)的重復(fù)字符壓縮成一個(gè)字符顯示
-c :取代或刪除標(biāo)準(zhǔn)輸入中所有不屬于 string1 的字符

示例
# 替換指定字符
$ echo "hello world" | tr 'h' 'H'
Hello world

# 刪除指定字符(數(shù)字和空格)
$ echo "hello 12345 world" | tr -d '0-9 '
helloworld

# 壓縮指定字符
$ echo "heeeeeeeeello world" | tr -s 'e'
hello world

# 字符集補(bǔ)集
$ echo "hello 12345 world" | tr -c -d '0-9'
12345
字符集格式(string1 / string2)

字符集合(即命令參數(shù)中的 string1 和 string2)用于指定需要替換或刪除的字符炮姨。'A-Za-z''A-F0-9'栖袋、'}.\t' 等都是合法的字符集合。

字符 含義
\b 退格符
\n 新行
\r 回車符
\t Tab 符
CHAR1-CHAR2 從 CHAR1 到 CHAR2 的所有字符(按 ASCII 字符順序)
[:alnum:] 所有字母和數(shù)字
[:alpha:] 所有字母
[:blank:] 所有空格和 Tab 字符
[:cntrl:] 所有控制字符
[:graph:] 所有可打印字符抚太,不包括空格
[:lower:] 所有小寫字符
[:punct:] 所有標(biāo)點(diǎn)符號(hào)
[:space:] 所有橫向或縱向的空白字符
[:upper:] 所有大寫字符

二塘幅、cut 命令

cut 命令用于切割并篩選文本行中的指定部分,其操作對(duì)象可以是一個(gè)或多個(gè)文件尿贫,如未指定文件選項(xiàng)或該選項(xiàng)為 "-"电媳,則從標(biāo)準(zhǔn)輸入中讀取需要操作的內(nèi)容。

語(yǔ)法

cut <option> list [file ...]
其中 list 選項(xiàng)為由逗號(hào)分隔的數(shù)字或 "-" 號(hào)連接的數(shù)字范圍庆亡,用于指定文本行中需要顯示的字段匾乓。

  • N-:從第 N 個(gè)字節(jié)、字符又谋、字段到結(jié)尾
  • N-M:從第 N 個(gè)字節(jié)拼缝、字符娱局、字段到第 M 個(gè)(包括 M 在內(nèi))
  • -M:從第 1 個(gè)字節(jié)、字符咧七、字段到第 M 個(gè)(包括 M 在內(nèi))
選項(xiàng)

-b list:list 選項(xiàng)指定的是 byte 的范圍
-c list:list 選項(xiàng)指定的是字符的范圍
-d:指定字段的分隔符衰齐,默認(rèn)是 Tab
-f list:list 選項(xiàng)指定的是字段的范圍

示例

用于演示的文件內(nèi)容如下:

$ cat students.txt
No  Name    Mark
01  rose    69
02  jack    71
03  alex    68

使用 -f 選項(xiàng)提取指定字段

$ cut -f 2,3 students.txt
Name    Mark
rose    69
jack    71
alex    68

使用 -d 選項(xiàng)指定字段分隔符

$ cat students2.txt
No,Name,Mark
01,rose,69
02,jack,71
03,alex,68
$ cut -f 2,3 -d "," students2.txt
Name,Mark
rose,69
jack,71
alex,68

使用 -c 選項(xiàng)提取指定字符范圍里的內(nèi)容

$ cat test.txt
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
$ cut -c -5 test.txt
abcde
abcde
abcde
$ cut -c 5- test.txt
efghijklmnopqrstuvwxyz
efghijklmnopqrstuvwxyz
efghijklmnopqrstuvwxyz

三、sort 命令

sort 命令用于將文件內(nèi)容進(jìn)行排序继阻,并將排序結(jié)果打印到標(biāo)準(zhǔn)輸出耻涛。它將文件的每一行文本視為一個(gè)單位,從首字母向后瘟檩,依次按該字母的 ASCII 碼值進(jìn)行比較抹缕,并按升序輸出。

選項(xiàng)

-b:忽略每行行首的空格字符
-c:檢查文件是否已按順序排序
-d:排序時(shí)芒帕,只考慮字母歉嗓、空格和數(shù)字,忽略其它字符
-f:排序時(shí)背蟆,將小寫字母視為大寫字母(即忽略大小寫)
-i:排序時(shí)鉴分,忽略所有非打印字符
-M:將前面三個(gè)字母按月份的縮寫進(jìn)行排序
-n:按照數(shù)值的大小進(jìn)行排序
-o:將排序好的結(jié)果輸出到指定文件中
-r:以相反的順序輸出排序后的結(jié)果
-t:指定排序時(shí)使用的欄位分隔符
-u:合并顯示內(nèi)容相同的行

示例

用于演示的文件內(nèi)容如下:

$ cat sort.txt
AAA:BB
aaa:4
ccc:10
bbb:20
bbb:8

簡(jiǎn)單排序

$ sort sort.txt
AAA:BB
aaa:4
bbb:20
bbb:8
ccc:10

按照 BB 列的數(shù)字由大到小排序

$ sort -nr -t: -k2 sort.txt
bbb:20
ccc:10
bbb:8
aaa:4
AAA:BB
# -n 表示按照數(shù)字大小排序,-r 表示反向排序
# -t: 表示冒號(hào)作為欄位分隔符带膀,-k2 表示第二欄(即 BB 列)作為排序依據(jù)

四志珍、uniq 命令

uniq 命令用于報(bào)告或過(guò)濾文件中內(nèi)容重復(fù)的行

選項(xiàng)

-c:在每行輸出內(nèi)容的行首加上該行重復(fù)的次數(shù)
-d:僅顯示內(nèi)容重復(fù)的行
-u:僅顯示內(nèi)容未重復(fù)的行
-f:不比較指定的欄位
-s:不比較指定的字符

示例
# 源文件
$ cat uniq.txt
helloworld
helloworld
helloshell
hellotext

# 刪除重復(fù)行
$ uniq uniq.txt
helloworld
helloshell
hellotext

# 只顯示未重復(fù)的內(nèi)容
$ uniq -u uniq.txt
helloshell
hellotext

# 統(tǒng)計(jì)各行出現(xiàn)的次數(shù)
$ uniq -c uniq.txt
   2 helloworld
   1 helloshell
   1 hellotext
# 只顯示重復(fù)行
$ uniq -d uniq.txt
helloworld
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市垛叨,隨后出現(xiàn)的幾起案子伦糯,更是在濱河造成了極大的恐慌,老刑警劉巖嗽元,帶你破解...
    沈念sama閱讀 219,589評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件敛纲,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡剂癌,警方通過(guò)查閱死者的電腦和手機(jī)淤翔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)佩谷,“玉大人旁壮,你說(shuō)我怎么就攤上這事⌒程矗” “怎么了抡谐?”我有些...
    開(kāi)封第一講書人閱讀 165,933評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)桐猬。 經(jīng)常有香客問(wèn)我麦撵,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 58,976評(píng)論 1 295
  • 正文 為了忘掉前任厦坛,我火速辦了婚禮五垮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘杜秸。我一直安慰自己,他們只是感情好润绎,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,999評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布撬碟。 她就那樣靜靜地躺著,像睡著了一般莉撇。 火紅的嫁衣襯著肌膚如雪呢蛤。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,775評(píng)論 1 307
  • 那天棍郎,我揣著相機(jī)與錄音其障,去河邊找鬼。 笑死涂佃,一個(gè)胖子當(dāng)著我的面吹牛励翼,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播辜荠,決...
    沈念sama閱讀 40,474評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼汽抚,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了伯病?” 一聲冷哼從身側(cè)響起造烁,我...
    開(kāi)封第一講書人閱讀 39,359評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎午笛,沒(méi)想到半個(gè)月后惭蟋,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,854評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡药磺,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,007評(píng)論 3 338
  • 正文 我和宋清朗相戀三年告组,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片与涡。...
    茶點(diǎn)故事閱讀 40,146評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡惹谐,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出驼卖,到底是詐尸還是另有隱情氨肌,我是刑警寧澤,帶...
    沈念sama閱讀 35,826評(píng)論 5 346
  • 正文 年R本政府宣布酌畜,位于F島的核電站怎囚,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜恳守,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,484評(píng)論 3 331
  • 文/蒙蒙 一考婴、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧催烘,春花似錦沥阱、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,029評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至舰始,卻和暖如春崇棠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背丸卷。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,153評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工枕稀, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人谜嫉。 一個(gè)月前我還...
    沈念sama閱讀 48,420評(píng)論 3 373
  • 正文 我出身青樓萎坷,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親骄恶。 傳聞我的和親對(duì)象是個(gè)殘疾皇子食铐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,107評(píng)論 2 356

推薦閱讀更多精彩內(nèi)容

  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,392評(píng)論 0 5
  • .bat腳本基本命令語(yǔ)法 目錄 批處理的常見(jiàn)命令(未列舉的命令還比較多,請(qǐng)查閱幫助信息) 1僧鲁、REM 和 :: 2...
    慶慶慶慶慶閱讀 8,102評(píng)論 1 19
  • linux資料總章2.1 1.0寫的不好抱歉 但是2.0已經(jīng)改了很多 但是錯(cuò)誤還是無(wú)法避免 以后資料會(huì)慢慢更新 大...
    數(shù)據(jù)革命閱讀 12,168評(píng)論 2 33
  • 基礎(chǔ)命令 主要的命令和快捷鍵 Linux系統(tǒng)命令由三部分組成:cmd + [options]+[operation...
    485b1aca799e閱讀 1,100評(píng)論 0 0
  • 一直以來(lái)花錢都沒(méi)有特意節(jié)制過(guò)寞秃,總覺(jué)得自己一年開(kāi)銷10多萬(wàn)沒(méi)什么斟叼,畢竟結(jié)余率也有50%了呀。直到今年做完投資預(yù)算傻眼...
    希澤爾閱讀 316評(píng)論 9 2