文本處理工具及grep命令的理解與使用

1. 文本處理工具

  1.1 文件查看命令cat tac

    cat命令:連接文件并在標準輸出上面顯示出來

blob.png

 圖 1-1   cat幫助文檔   

    cat [option]…[file]…

        -E 顯示行結束符

        -n 對顯示的每一行進行編號 

        -A 顯示所有的控制符

        -b 非空行號

        -s 壓縮連續的空行成一行

blob.png

       圖 1-2  cat命令使用 

    tac 也是文件查看命令,它與cat相反,cat是順序查看,從文件頭部開始逐行顯示內容,tac正好相反,它是從文件尾部開始逐行向上顯示,所以當用戶使用該命令查看文件時,最先顯示的是文件尾部的內容,文件頭部內容是最后顯示的。

  2.1  分頁查看文件more less

     more 分頁查看文件 

blob.png

圖 1-3  more幫助文檔

      more [option]…file…

       -d 顯示翻頁及退出提示

      less 一頁一頁地查看文件或stdin輸出blob.png

圖 1-4  less幫助文檔 

      less [option]…file…

      查看時可以使用 /文本 搜索 文本  n/N 跳到上一個或下一個匹配

    

   head 顯示文本前n行內容

      head [option]…file…

        -c n 指定獲取前n個字節

        -n n 指定獲取前n行

        -#  指定行數blob.png

圖 1-6  head命令使用

   tail 從文件尾部開始查看

     tail [option]…file… 

       -c n 指定獲取后n個字節

       -n n 指定獲取后n行

       -# 指定行數

       -f 跟蹤顯示文件新追加的內容

blob.png

圖 1-7  head命令使用

  3.1 按列抽取文本cut及合并文件paste

    cut [option]…file…

blob.png

圖 1-8  cut幫助文檔

       -d delimiter 指明分隔符,默認tab

       -f fields 字段

       -c 按字符切割

       –output-delimiter=string 指定輸出分隔符

  blob.png

                    圖 1-9  cut命令使用

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

      paste [option]…file…

        -d 指定分隔符

        -s 所有的行合成一行

blob.png

            圖 1-10  paste命令使用

  4.1 文本數據統計及排序

    4.1.1 wc命令可以統計計數單詞總數,行總數,字節總數和字符總數

blob.png

圖 1-11  wc幫助手冊

    wc 

     -l 只對行進行計數

     -w 只對單詞總數計數

     -c 只對字節總數計數

     -m 只對字符總數計數

blob.png

           圖 1-12  wc命令使用

  4.1.2 文本排序sort

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

blob.png

圖 1-13  sort幫助文檔

      -r 執行反向整理

      -n 執行按數字大小整理

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

      -u 選項刪除輸出中的重復行

      -t c 選項使用c作為字段分隔符

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

blob.png

圖 1-14  sort命令使用

 4.1.3 uniq命令

     uniq 從輸入中刪除重復的前后相接的行

blob.png

圖 1-15  uniq幫助文檔

     uniq [option]…file…

       -c 顯示每行重復的次數

       -d 僅顯示重復的行

       -u 僅顯示不存重復的行

     常與sort命令一起配合使用

      sort file | uniq -c

blob.png

圖 1-16  uniq命令使用

2.文本處理三劍客之grep

    grep 文本過濾工具

       Global search REgular expression and Print out the line

       作用 文本搜索工具,根據用戶指定的"模式"對目標文本逐行進行匹配,打印匹配到的行。

       模式 有正則表達式字符及文本字符編寫成的過濾條件

blob.png

圖 2-1 grep幫助文檔

    grep [option] pattern [file]…

       –color=auto 對匹配到的文本著色顯示

       -v 顯示不能夠被pattern匹配到的行

       -i 忽略大小寫

       -n 顯示匹配的行號

       -c 統計匹配的行數

       -o 僅顯示匹配到的字符串

       -q 靜默模式

       -A n after 后n行

       -B n before 前n行

       -C n context 前n行后n行

       -e 實現多個選項之間的邏輯or關系

       -w 正行匹配整個單詞

       -E 使用ERE

blob.png

圖 2-2 grep命令使用

  egrep grep的擴充版本,優化了一些grep的語法,擴充了grep支持的功能

    egrep=grep -E

      egrep [option] pattern [file…]

3.正則表達式及擴展正則表達式

  REGEXP 有一類特殊字符及文本字符所編寫的模式,其中有些字符(元字符)不表示字面意義,而是控制或通配的功能。

  正則表達式分為:

     基本正則表達式:BRE

     擴展正則表達式:ERE     blob.png

 圖 3-1 正則表達式幫助文檔

   blob.png

                 圖 3-2 正則表達式

  正則表達式:

    位置錨定: 定位出現的位置

        ^ 行首錨定,用于模式的最左側

        $ 行尾錨定,用于模式的最右側

        ^PATTERN$ 用于模式匹配整行

            ^$ 空行  ^[[:space:]]*$ 空白行

        \<或\b 詞首錨定,用于單詞模式的最左側

        \>或\b 詞尾錨定,用于單詞模式的最右側

        \<PATTERN\> 匹配整個單詞

    分組:

        \(\)將一個或多個字符捆綁在一起,當作一個整體進行處理,如\(root\)\+

        分組括號中的模式匹配到的內容會被正則表達式引擎記錄與內部變量中,這些變量的命名方式為:\1,\2,\3…

        \1表示從左側起,第一個左括號以及與之匹配右括號之間的模式所匹配到的字符,引用前面分組括號中的模式所匹配到的字符而非模式本身。 

blob.png

           圖 3-3 正則表達式位置錨定

  擴展正則表達式

    次數匹配:

      *   匹配前面字符任意次

      ?  0次或1次

      +   1次或多次

     {m}  匹配m次

     {m,n} 至少m次,至多n次

    位置錨定

      ^     行首

      $     行尾

      \<,\b  詞首 

      \>,\b  詞尾

    分組

      ()

      向后引用 \1,\2…

    或者

      a|b

      C|cat C或cat

     (C|c)at Cat或cat

blob.png

             圖 3-3 egrep命令使用

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

(0)
Stupid_LStupid_L
上一篇 2016-08-07 22:07
下一篇 2016-08-07 22:15

相關推薦

  • 初學Linux之標準 I/O 和管道

    前面我們已經了解了文件系統的部分內容,我們可以通過 ls 命令讓當前目錄下的內容都顯示在屏幕上,也可以使用 pwd 命令,顯示當前的所在的目錄路徑。但是我們輸入的是命令,本身并沒有輸入“顯示”這類命令和要求,但是系統就自動的在屏幕上輸出我們命令指定的信息。由此可以想象到,系統自身有默認的一種輸出方式,同時,有輸出就有輸入,當輸入的和系統無關,系統也會自動提示錯誤,以上就是我們接下來要了解的基礎內容——標準 I/O。具體的涉及內容包括:三種 I/O 設備,把 I/O 重定向入文件,tr 命令的使用,使用管道鏈接命令。

    2017-12-02
  • 四大開源協議的異同:GPL、LGPL、BSD、Apache

    便于自身理解四大常用開源協議的異同之處。

    Linux干貨 2017-10-25
  • MySQL主從復制: MHA

                    MySQL主從復制: MHA 前言 MHA的架構 環境部署 實驗步驟 總結 前言 上篇文章我們實現了MySQL的主從復制, 但是我們之前就說過, 主從復制是有很多問題的…

    Linux干貨 2016-04-28
  • Linux基礎-用戶管理相關操作-week 4

    1.復制/etc/skel 目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其他用戶均沒有任何訪問權限  cp /etc/skel /home/tuser1 -rf chmod og=  /home/tuser1 -R 2.編輯/etc/group文件添加組hadoop echo hadoop:x:503 …

    Linux干貨 2016-11-21
  • yum的簡單配置與使用

    yum 的基本配置與使用 1、yum:是rpm包管理器的前端工具,它是基于C/S結構,就客戶端服務器模式 2、yum使用前需先配置好服務端的倉庫(yum源) 3、yum客戶端是通過文件傳輸協議來獲取到yum源上的軟件包的,yum一共支持四種傳輸協議 http:// https:// ftp:// file:// (這是一個本地路徑,當yum源為本地光盤時,使…

    Linux干貨 2017-06-11
  • 通過FTP服務怒刷基礎功法熟練度(匿名篇)

        Linux門派多種多樣,那么本次就講講本人刷基本命令熟練度的方法。FTP原理什么的都不說了,網上有很多。直接上酸菜~學徒水平,大師勿笑。     本篇搭載的是FTP匿名用戶訪問,同時可以在服務器上進行創建刪除等操作。危險系數有點點大,僅推薦用來刷命令熟練度使用。我用的Li…

    2017-07-25
欧美性久久久久