Mozart的劍(文本處理工具)——貳劍(head、tail、cut、sort、uniq、wc、diff、paste、patch)

有點拖了,沒有好好整理之前的內容,拖延癥害死人…..Mozart的劍(文本處理工具)——貳劍(head、tail、cut、sort、uniq、wc、diff、paste、patch)Mozart的劍(文本處理工具)——貳劍(head、tail、cut、sort、uniq、wc、diff、paste、patch)

這次介紹一些有趣的小文本處理工具,可以方便截取文本內容、排序、備份之類的。

head

用法:head [選項]… [文件]…

head[OPTION]…[FILE]…

默認將每個指定文件的頭10行顯示到標準輸出。如果指定了多于一個文件,在每一段輸出前會給出文件名作為文件頭。如果不指定文件,或者文件為“-“,則從標準輸入讀取數據

-c  –bytes=[-]k 顯示每個文件的前k字節內容;如果附加“-“參數,則除了每個文件的最后K字節數據外顯示剩余全部內容

-n  –lines=[-]k 顯示每個文件的前k行內容;如果附加“-“參數,則除了每個文件的最后K 行外顯示剩余全部內容

-q  –quiet,–silent 不顯示包含給定文件名的文件頭

-v  –verbose 總是顯示包含給定文件名的文件頭

Mozart的劍(文本處理工具)——貳劍(head、tail、cut、sort、uniq、wc、diff、paste、patch)

Mozart的劍(文本處理工具)——貳劍(head、tail、cut、sort、uniq、wc、diff、paste、patch)


tail

tail[OPTION]…[FILE]…

tail – 輸出文件的末尾部分,默認在標準輸出上顯示每個文件的最后10行,如果多于一個文件會在每一段輸出前會給出文件名作為文件頭,一個接一個地顯示。如果不指定文件,或者文件為“-“,則從標準輸入讀取數據。

-c  –bytes=N 輸出最后N個字節

-n  –lines=N 輸出最后N行而非默認的最后10

-q  –quiet –silent 從不輸出給出文件名的首部

-v  –verbose 總是輸出給出文件名的首部

-f  –follow[={name|descriptor}] 當文件增長時輸出后續添加的數據,動態顯示。跟蹤顯示文件新追加的內容常用日志監控。

Mozart的劍(文本處理工具)——貳劍(head、tail、cut、sort、uniq、wc、diff、paste、patch)

Mozart的劍(文本處理工具)——貳劍(head、tail、cut、sort、uniq、wc、diff、paste、patch)

Mozart的劍(文本處理工具)——貳劍(head、tail、cut、sort、uniq、wc、diff、paste、patch)

拓展:與head相似,如果N(字節或者行數)的第一個字符為`+’,那么從每個文件的開頭算起的第N項開始顯示,否則,顯示該文件的最后N項。

Mozart的劍(文本處理工具)——貳劍(head、tail、cut、sort、uniq、wc、diff、paste、patch)


cut

按列抽取文本

cut[OPTION]…[FILE]…

-d –DELIMITER:指明分隔符,默認為Tab,一般與-f 連用。

-f 選取第幾列

指定某一列

n-m  指定n列到m

n,n-m  混合指定

–output-delimiter 指定輸出符

示例:截取用戶名與UID且以“+”符號為分隔符。

cut -d: -f1,3 –output-delimiter=’+’ /etc/passwd

Mozart的劍(文本處理工具)——貳劍(head、tail、cut、sort、uniq、wc、diff、paste、patch)

-c  [n-m]按字符切割 第n個字符到第m個字符

-b  [n-m]按字節切割 第n個字節到第m個字節

示例:截取/etc/passwd文件的前四個字符。

cut -c 1-4 /etc/passwd

Mozart的劍(文本處理工具)——貳劍(head、tail、cut、sort、uniq、wc、diff、paste、patch)

經典練習題:顯示當前主機第一個網卡的IP地址

ifconfig |head -n 2| tail -n 1| tr -s ‘ ‘ : |cut -d: -f4


paste

將每個指定文件里的每一行整合到對應一行里寫到標準輸出,默認用制表符分隔。如果沒有指定文件,或指定文件為”-“,程序將從標準輸入讀取數據。

paste[OPTION]…[FILE]…

-d分隔符:指定分隔符,默認用TAB

-s: 不使用平行的行目輸出模式,而是每個文件占用一行

paste f1 f2

paste -s f1 f2

Mozart的劍(文本處理工具)——貳劍(head、tail、cut、sort、uniq、wc、diff、paste、patch)


wc

收集文本統計數據

wc命令的功能為統計指定文件中的字節數、單詞數、行數并將統計結果顯示輸出

可以對文件或STDIN中的數據運行

-c  –bytes 打印字節數
-m  –chars
打印字符數
-l  –lines
打印行數
-L  –max-line-length
打印最長行的長度
-w  –words
打印單詞數

Mozart的劍(文本處理工具)——貳劍(head、tail、cut、sort、uniq、wc、diff、paste、patch)


sort

文本排序

把整理過的文本顯示在STDOUT,不改變原始文件

sort [options] file

常用選項

sort

 -r 執行反方向(由上至下)整理?

   -n 執行按數字大小整理

   -f 選項忽略(fold)字符串中的字符大小寫

   -u 選項(獨特,unique)刪除輸出中的重復行

   -t c 選項使用c做為字段界定符

   -k X 選項按照使用c字符分隔的X列來整理能夠使用多次

示例:

cat /etc/passwd | sort

#排序默認以第一個數據排序,默認以字符串形式排序,以a開始升序排序,首字母相同則比較下一位的順序。

cat /etc/passwd | sort -t: -k3

#/etc/passwd中的以“:”為間隔符,對其第三欄排序,默認以第一數據排序,相同的話比較下一位的順序。

cat /etc/passwd | sort -nt: -k3

#/etc/passwd中的以“:”為間隔符,對其第三欄排序,按數字整體大小升序排列。

cat /etc/passwd | sort -rnt: -k3

#/etc/passwd中的以“:”為間隔符,對其第三欄排序,按數字整體大小以升序相反的方式降序排列。


uniq

uniq命令:從輸入文件或者標準輸入中刪除前后相接的重復的行,注意:連續且完全相同方為重復

uniq[OPTION]…[FILE]…

-c  –count 顯示每行重復出現的次數

-d  –repeated 僅顯示重復過的行

-D  –all-repeated[=delimit-method 顯示所有重復的行

-u  –unique 僅顯示不曾重復的行

-f  –skip-fields=N   比較時跳過前N

-s, –skip-chars=N    比較時跳過前N 個字符

-I  –ignore-case     在比較的時候不區分大小寫

-w  –check-chars=N   對每行第N 個字符以后的內容不作對照

常和sort命令一起配合使用:

sort test | uniq –c

Mozart的劍(文本處理工具)——貳劍(head、tail、cut、sort、uniq、wc、diff、paste、patch)


接下來介紹比較實用的功能,需要diff與patch功能結合使用。

diff

比較兩個文件之間的區別

命令:diff

patch

讓用戶利用設置修補文件的方式,修改,更新原始文件。

命令:patch

上面兩條命令相結合可以做出大事——“打補丁”或“更新”

diff命令的輸出被保存在一種叫做“補丁”的文件中

使用-u選項來輸出“統一的(unified)”diff格式文

件,最適用于補丁文件。

patch復制在其它文件中進行的改變(注意:要謹慎使用)

適用-b選項來自動備份改變了的文件

示例:

Mozart的劍(文本處理工具)——貳劍(head、tail、cut、sort、uniq、wc、diff、paste、patch)

換個角度,你也可以理解為對文件進行更新。同時,不要擔心舊版文件的丟失,每次更新都會產生后綴為“.orig”的文件,里面存儲著你的舊版文件。

Mozart的劍(文本處理工具)——貳劍(head、tail、cut、sort、uniq、wc、diff、paste、patch)

原創文章,作者:Mozart,如若轉載,請注明出處:http://www.www58058.com/83083

(0)
MozartMozart
上一篇 2017-07-31 23:43
下一篇 2017-08-02 11:01

相關推薦

  • linux發展簡史

    前言 為什么要寫這么一篇文章呢?我發現我雖然知道linux的一些知識,卻不知道linux方面的歷史,所以今天寫一篇關于linux方面歷史的文章,用來總結這段時間自己所學習到的關于linux的歷史與linux的知識。關于說起linux的歷史,就不得不介紹計算機的歷史,與其他相關操作系統的一些歷史,所以本文中的會簡單介紹Linux與其他操作系統的關系。主要講li…

    Linux干貨 2017-02-16
  • 網絡組Network Team

    網絡組Network Team 網絡組team:是將多個網卡聚合在一起,從而實現容錯和提高吞吐量 1 創建網絡組接口 nmcli connection add type team con-name TEAMname ifname INTname [config JSON] TEAMname 指定連接名,INname指定接口名, JSON指定runner方式,…

    Linux干貨 2017-05-07
  • 八大排序算法

    概述 排序有內部排序和外部排序,內部排序是數據記錄在內存中進行排序,而外部排序是因排序的數據很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存。 我們這里說說八大排序就是內部排序。     當n較大,則應采用時間復雜度為O(nlog2n)的排序方法:快速排序、堆排序或歸并排序序。    快速…

    Linux干貨 2015-04-07
  • 馬哥教育網絡21期+第6周博客練習

    請詳細總結vim編輯器的使用并完成以下練習題 1、復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#; :%s@\(^[[:space:]]\+\)@#&@g # Let rhgb know that we&#0…

    Linux干貨 2016-08-15
  • 一個PHP程序員學習運維的轉型

         我是一位PHP開發工程師,平時負責前端、后端以及服務器端的工作,但是稱不上是個牛逼的程序員。網上熱烈討論一則傳聞,“全棧工程師”(Full Stack Engineer),要求應征者對開發堆棧的每個方面都有所掌握。那究竟何為 “全棧工程師”呢?從字面上來理解,全棧工程師必須熟悉開發堆棧的每一個層次,或者至少熟悉絕大多數…

    Linux干貨 2017-04-02
  • TCP三次握手和四次揮手

    TCP三次握手 有兩臺機器,A是客戶端(主動發起請求的人),B是服務器端(被動接受請求的人),客戶端A剛開始沒有人和他通訊,所以客戶端A的狀態是CLOSDE(關閉的),服務器端B剛開始的狀態也是CLOSDE,但是總有人去訪問他,所以服務器端B開啟了LISTEN(收聽)狀態。 (1)假設A機器想鏈接B機器了,他就會向B機器發送一個建立鏈接的請求,這個建立鏈接請…

    2017-08-31
欧美性久久久久