文本處理工具

目錄bash

    查看文件內容cat,rev,more,lessless

    文件截取head,tail工具

    按列截取cutspa

    文本排序sort3d

    去除重複uniq日誌

    文件合併pastecode

    文本數據統計wcblog

 diff與patch排序

    

查看文件內容cat,rev,more,less

    咱們介紹幾個實用的文本查看工具,有針對於大文件的,也有針對於小文件的,咱們在查看文件的同時,還能夠對文件進行一些設置,好比設置行號,設置壓縮空行等,接下來咱們來看看這幾個工具是如何使用的吧。字符串

短文件查看工具   

1  命令:cattac2     格式:cat [option] filename
3     參數:
4         -n:顯示行號
5         -b:顯示非空行的行號
6         -E:顯示結束符$
7         -A:顯示全部控制字符
8         -s:壓縮連續的空行爲一行

  cat命令是主要針對於短文件查看的,從上至下的查看,可是tac正好相反,是從文件的下方到上方的查看。cat也能夠查看長文件,可是,咱們只能看到長文件的最後鋪滿屏幕的幾行,沒有辦法向上翻頁。

鏡像翻轉rev   

1  命令:rev
2     格式:rev [option] filename
3     選項:
4

長文件閱讀more

1  命令:more
2     格式:more [option] filename
3     參數:
4         空格鍵 (space):表明向下翻一頁;
5      Enter :表明向下翻『一行』;
6         /字符串 :表明在這個顯示的內容當中,向下搜尋『字符串』這個關鍵詞;
7         :f :馬上顯示出文件名以及目前顯示的行數;
8       q :表明馬上離開 more ,再也不顯示該文件內容。
9       b 或 [ctrl]-b :表明往回翻頁,不過這動做只對文件有用,對管線無用。    

  more命令雖然能夠查看長文件,可是在翻頁和查找的時候友好度並無less好,因此咱們通常均可以使用less對長文件的查看。

長文件閱讀less

 1     命令:less
 2     格式:less [option] filename
 3     選項:
 4         空格鍵 :向下翻動一頁;
 5         [pagedown]:向下翻動一頁;
 6     [pageup] :向上翻動一頁;
 7     /字符串 :向下搜尋『字符串』的功能;
 8     ?字符串 :向上搜尋『字符串』的功能;
 9     n :重複前一個搜尋 (與 / 或 ? 有關! )
10     N :反向的重複前一個搜尋 (與 / 或 ? 有關! )
11     g :前進到這個資料的第一行去;
12     G :前進到這個數據的最後一行去 (注意大小寫);
13     q :離開 less 這個程序;    

  咱們從選項上就能夠看出來,less這個工具來查看長文本的時候是很方便的,咱們能夠結合cat工具,顯示行號,顯示一些字符等,能夠對文件查看,使用很方便,咱們作一個演示:

文件截取head,tail

咱們在查看文件的時候,有時只須要文件的前幾行後者後幾行,這時候用上邊的文本查看工具都不太好用,這時候咋辦呢,咱們這裏有兩個工具,專門用來查看文本的首尾行的。

查看前幾行head   

1 命令:head
2     格式:head [option] filename
3     選項:
4         -c num:查看前num個字符
5         -n num:查看前num行

查看後幾行tail

 1  命令:tail
 2     格式:tail [option] filename
 3     選項:
 4         -c num: 指定獲取後num字節
 5     -n num: 指定獲取後num行
 6     -f: 跟蹤顯示文件新追加的內容,經常使用日誌監控

 

tail 的-f 選項用來實時查看日誌動態是十分有用的選項,能夠本身動手試一下。出了head和tail的單獨使用外,還能夠放在一塊兒使用,好比:我想截取一個文本的11-15行而且按照行號輸出,該咋辦,咱們可使用cat -n /etc/passwd | head -n 15 | tail -n 5,這種操做用起來仍是很爽的。

按列截取cut

    有些時候咱們不須要文本的所有內容,只是須要其中的一部分對咱們來講最重要的東西,好比咱們查看一個分區的使用量,咱們只須要獲得它的使用大小就能夠了,好比咱們想獲取分區磁盤的最大使用量是多少:

  咱們想到獲得的只是一個數字而已,這該如何操做呢?咱們先介紹一個咱們咱們須要用到的命令cut:

 1    格式:cut [option] filename
 2     選項:
 3         -d DELIMITER: 指明分隔符,默認tab
 4     -c 按字符切割
 5     --output-delimiter=STRING指定輸出分隔符
 6     -f FILEDS:切除咱們須要的字段
 7     #: 第#個字段
 8     #,#[,#]:離散的多個字段,例如1,3,6
 9     #-#:連續的多個字段, 例如1-6
10     混合使用: 1-3,7

    通常狀況下,cut命令和tr命令配合使用能夠獲得很好的效果,咱們以上面的問題爲例,看看如何切出咱們的數據,在這我先使用一下一個文本排序工具sort,接下來咱們用tr,sort,配合cut來截取咱們想要的內容;

1 [root@CT71 tmp]# df -h | tr -s " " % |sort -t "%" -k 5 -nr | cut -d "%" -f 5 | head -1
2 17

17就是咱們最後想要的結果啦!

文本排序sort    

1 命令:sort
2     格式:sort [option] filename
3     選項:
4         -r 執行反方向(由上至下)整理
5     -n 執行按數字大小整理
6     -f 選項忽略(fold)字符串中的字符大小寫
7     -u 選項(獨特, unique)刪除輸出中的重複行
8     -t c 選項使用c作爲字段界定符
9     -k X 選項按照使用c字符分隔的X列來整理可以使用屢次

  文本排序功能用起來也是至關的順手,咱們須要帶有必定格式的文本進行按必定規則進行排序,用起來至關的方便,在上面咱們已經使用過一個sort工具了,接下來咱們使用其餘的參數作一個演示:

在咱們的不少文本中會有不少重複的行,而且這些重複的行信息都是同樣的,這時候咱們想要把它們合併成一行,有時候咱們甚至想要看看這些重複的行到底有多少,這時候咱們就能夠用到一個工具uniq將重複行刪掉並統計重複的信息。

uniq命令:從輸入中刪除先後相接的重複的行

1  uniq [OPTION]... [FILE]...
2   -c: 顯示每行重複出現的次數
3   -d: 僅顯示重複過的行
4   -u: 僅顯示未曾重複的行
5   連續且徹底相同方爲重複
6             常和sort 命令一塊兒配合使用:
7      sort userlist.txt | uniq –c    

文件合併paste

paste 合併兩個文件同行號的列到一行

1 paste [OPTION]... [FILE]...
2     -d 分隔符:指定分隔符,默認用TAB
3     -s : 全部行合成一行顯示

咱們以一個例子說明這個工具的用法

 

[root@CT71 tmp]# paste -d "$" paste.txt paste2.txt
000$abc
001$acb
010$bac
011$bca
100$cab
101$cba
110$qwe
111$asd
[root@CT71 tmp]# paste -s paste.txt
000    001    010    011    100    101    110    111

文本數據統計wc

  有些時候咱們須要對文本的數據進行統計,看看有多少個單詞沒有多少行等等,wc工具就還能夠幫助咱們獲得咱們想要的信息,wc的意思是word count的意思,不能理解成咱們平常要去的地方。

1   命令:wc
2     格式:wc [option] filename
3     選項:
4         -l:來只計數行數
5     -w:來只計數單詞總數
6     -c:來只計數字節總數
7     -m:來只計數字符總數

  在默認狀況下wc統計的是行數,字符數和字節數,咱們也能夠經過參數來獲取咱們想要的信息,好比:

diff與patch

咱們能夠利用diff用於比較兩個文件內容的不一樣之處,有必定的可讀性,可是咱們通常是將diff工具用於比較兩個文件不一樣並打補丁,用於給舊文件打補丁,將舊文件更新到與當前新文件內容一致。就好像咱們安裝過QQ後,更新QQ並非從新下載安裝,由於他只是將咱們的舊版QQ打上補丁更新到如今的新版本。

比較文件輸出補丁

diff -u file1 file2 > file.patch

打補丁

    patch -b file1 file.patch

打完補丁,file1文件就和file2文件內容一致了

相關文章
相關標籤/搜索