Linux—文本處理(查看,統計,排序,抽取,合并,grep,基本正則表達式)

Linux的文本管理有著眾多的文本命令工具,這些工具基本可以滿足不同的文本處理要求,很是靈活,掌握文本管理命令對系統的維護是必備基礎技能。


1.文本查看命令:

    (1)cat

       語法:

       cat [OPTION]… [FILE]…

       常用選項:

       -n:顯示查看文件內容的行號;

       -A:顯示文件內容中的所有特殊控制符符號,比如Tab鍵的字符,和換行符等;

       -E:顯示文件內容中的結束控制符$;

       -s:連續的空行壓縮成一行顯示;

       -b:空行不顯示行號;


    (2)more:有些大文件內容很多,cat命令一下輸出完到底部,前面的內容沒辦法在命令行界面里靈活查看,more支持分頁查看文件;

       語法:

       more FILE…

       支持快捷鍵操作:Ctrl+b,Enter,空格鍵;

       支持文本搜素:使用“/”后跟string關鍵字

       搜索查找到支持地位跳轉:n:向下 N:向上;

     注意:翻到文件尾部就退出


    (3)less:命令比more命令更靈活,使用分頁器,同時支持PATTERN;

       語法:

       less FILE…

       前面more的功能都支持。

    

    (4)head:定位查看文本頭部內容;

       語法:

       head [options]…FILE…

       常用選項:

       -n#:指定顯示前面多少行;

       -c#:顯示文件頭部內容的字節數;

    (5)tail:定位查看文件尾部內容;

       語法:

       tail [options]…FILE…

       常用選項:

       -c#:指定顯示文件尾部字節數;

       -n#:指定顯示尾部多少行

       -f:跟著顯示文件尾部追加內容,不退出繼續顯示,用作日志監控;


2.在Linux系統中,我們需要經常對文件進行操作,除了增刪改查以外,有時需要在不改變原文件屬性的前提下對文件進查看,統計,排序,比較等簡單操作。下面分別介紹一下這些需求。

 

    (1)文本統計工具wc命令

       wc命令

       語法 :

      wc [options]…[FILE]…

      常用選項:

      不跟選項默認顯示內容分別為:文件行數,單詞數,字節數;

      -l:只顯示文件行數;

      -c:只顯示文件中的字節數bytes;

      -w:只顯示文件中的單詞數;

      -m:只顯示文件中的字符數chars;


    (2)文本裁剪工具cut命令和文本合并工具paste命令

       cut 命令有些文件的格式有標準分割符,組成的行和列,可以使用cut命令取出相應的行。

       語法:

       cut [options]…[FILE]…

      常用選項:

      -d:指定以什么符分割每行列;

      -f:指定第幾個列,可以連續表示1-5,逗號分割;

      -c#:使用字符個數做分割列;

     

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

      語法

      paste [OPTION]… [FILE1] [FILE2]

      常用選項:

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

      -s : 所有行合成一行顯示

    

    (3)文本字符排序工具sort和uniq命令

        sort

        語法:

        sort [options]…[FILE]

        常用選項:

        默認排序是根據字符排序

        -n:以數值大小排序

        -r:反向逆序排序

        -t:指定以什么符作為分割列;

        -k:指定第幾列進行排序;

        -f:忽略大小寫;

   

        uniq

        語法:

       uniq [options]…[FILE]…

       常用選項:

       默認顯示連續重復的行只顯示一行;

       -c:顯示重復行次數;

       -u:不顯示重復的行;

       -d:僅僅顯示重復的行;

 

  (4)文本比較和補丁恢復工具diff和patch命令

 

        diff:是逐行比較內容

        語法:

        diff [options] [FILE1]  [FILE2]

        diff [options] [FILE1]  [FILE2] >file_patch

        常用選項:

         -u:改變比較內容輸出的風格;

         重定向輸出的內容為補丁文件,可以利用補丁恢復文件,

 

        patch

        語法:

        patch [options] [file_patch] [FILE]

        常用選項:

         -i:利用補丁恢復原文件;

         R:返回操作;

3.前面介紹了Linux的文本查看以及統計排序抽取比較等工具,但是對文件內容的特定的行列中的字符查找操作,前面的命令很難實現。但是Linux系統中還有許多其他工具是基于模式PATTERN處理文本,其模式要用到正則表達式。

   正則表達:正則表達式是由正則表達式的元字符和文本字符組成的過濾條件;

    正則表達式的元字符:是由一類特殊的字符組成,這些特殊字符不表示本身的含義,而是做控制、次數 或通配的功能。正則表達式根據元字符意義的不同可以分為有兩種類型:如下:

      (1)基本正則表達:基本正則表達式的元字符意義如下:

            .   :表示任意單個字符;

         [ ]  :表示指定范圍內的單個字符;

         [^]  :表示指定范圍外的單個字符;

匹配次數:

         *   :其前字符任意次數,可以是0次1次或一次以上。

         .*  :匹配任意長度的任意字符;

           \?  :匹配其前字符0次或1次;

           \+  :匹配其前字符最少1次多了不限制。

         \{n\}  :匹配其前字符指定n次

         \{m,n\} :匹配其前字符至少m次,至多n次,

         \{0,n\} :匹配其前字符至多n次,最少不限制,可以0次 ;

          \{m,\} :匹配其前字符至少m次,至多不限制;

位置錨定:

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

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

       ^PATTERN$ :用于模式匹配整行

        ^$     :表示空白行,不包括空白字符鍵和Tab鍵;

    ^[[:space:]]  :包括Tab鍵字符空白字符的空白行

 

單詞錨定:這里的單詞表示:非特殊字符組成的的連續字符(字符串);

       \<   :錨定詞首;可以用\b用于左側;

       \>   :錨定詞尾;可以用\b 用于右側;

  \< PATTERN\>   :錨定整個單詞;

 

分組及引用:前面的匹配模式只能匹配其前單個字符,要想把整個字符串當成一個整體被匹配,需要分組才能實現,同時要想在后面再次匹配其前模式匹配到的內容,保證前后匹配內容相同,只能分組引用,根據正則表達式引擎會把其前匹配到的內容保存為變量,引用變量,這樣引用的不在是模式,而是變量保存的內容。達到前后匹配內容一致。

        \(\)::分組格式

        引用:

         \1  :模式從左側起,第一個左括號以及與之匹配的右括號之間的匹的模式所匹配到的字符;

         \2  :模式從左側起,第2個左括號以及與之匹配的右括號之間的匹的模式所匹配到的字符;

         …

         注意括號不能不能交叉,跟數學表達式括號運算順序一樣。

 

    (2)擴展正則表達式ERE: 擴展正則表達式的元字符,前面提到的元字符在這里稍微有點改變。

字符匹配:

          .  :任意單個字符

         []  :匹配指定范圍的單個字符

        [^]   :匹配不在指定范圍內的單個字符

 

次數匹配:

       *    :匹配其前字符任意次

     ?      : 0或1次

     +      :1次或多次

     {m}     :匹配m次

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

位置錨定和單詞錨定跟其前面的基本正則表達式一樣意義。

分組:

    ()::分組格式

        引用:

         \1  :模式從左側起,第一個左括號以及與之匹配的右括號之間的匹的模式所匹配到的字符;

         \2  :模式從左側起,第2個左括號以及與之匹配的右括號之間的匹的模式所匹配到的字符;

         …

或者:

    |

   這里的或者匹配的是兩邊獨立完整的字符串

4.grep文本處理工具:

     grep是基于模式過濾文本行,也就支持正在表達式;

            grep(global search regular expression(RE) and print out the line,全面搜索正則表達式并把行打印出來)是一種強大的文本搜索工具,它能使用正則表達式搜索文本,      并把匹配的行打印出來。

     grep家族有三個后兩個分別是egrep和fgrep;

     egrep是基于擴展的正則表達式

     fgrep是不使用正則表達式,所以匹配速度非??欤瑢唵蔚倪^濾模式可以使用fgrep;

     grep

     語法:

     grep [OPTIONS] PATTERN [FILE…]

     grep [OPTIONS] [-e PATTERN | -f FILE] [FILE…]

     常見選項:

     –color:對匹配到的字符和字符串高亮顯示

     -o:只顯示匹配到的字符和字符串;

     -v:對沒有匹配到的行進行顯示;

     -i:忽略大小寫;

     -n:對匹配到的行顯示行號;

     -q:靜默模式,作用是有時候匹配不到內容grep命令也不會有任何提示,這時候只想知道匹配結果有還是沒有,需要"echo $?"對命令的執行結果進行判斷。

  -e :可以指定多個模式進行匹配;或者的意義;

  -w :完整單詞匹配;

  -A# :對匹配到的行定位向后顯示#行;

  -B# :對匹配到的行定位向前顯示#行;

  -C# :對匹配到的行定位向前后分顯示#行

  -f file:引用文件內的模式當做進行匹配的條件;

  -E:對于egrep,也就支持擴展的正則表達式;


  egrep:擴展的grep,默認支持的應用的是擴展正則表達式; 

  語法:

     egrep [OPTIONS] PATTERN [FILE…]

     egrep [OPTIONS] [-e PATTERN | -f FILE] [FILE…]

     常用選項:

     其前的grep選項基本支持,

     -G:支持基本正則表達式;


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

(3)
xiashixiangxiashixiang
上一篇 2016-08-07
下一篇 2016-08-07

相關推薦

  • 計算機網絡基礎

    1、OSI, TCP/IP, 五層協議的體系結構, 以及各層協議 OSI分層(7層): 物理層, 數據鏈路層, 網絡層, 傳輸層, 會話層, 表示層, 應用層 TCP/IP分層(4層): 網絡接口層, 網際層, 傳輸層, 應用層 五層協議(5層): 物理層, 數據鏈路層, 網絡層, 運輸層, 應用層 每一層的協議: 物理層: RJ45, CLOCK, IEE…

    Linux干貨 2016-09-19
  • N26-第七周博客作業

    一、創建一個10G分區,并格式為ext4文件系統; 1、 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl;          A、創建一個10G的磁盤空間 [root@VM_221_40_centos ~]#fdisk /de…

    2017-07-09
  • 安裝 VMware Workstation

    1.第一步 打開安裝包所在位置 2.第二步 開始安裝 ai      上面的路徑看個人習慣修改,然后點擊下一步 3.安裝完成后,點擊輸入許可證秘鑰  打開Vmware注冊碼生成器  安裝成功

    2017-07-11
  • LVS集群類型

     lvs:Linux Virtual Server         l4:四層路由、四層交換          根據請求報文的目標IP和目標PORT將其調度轉發至后端的某主機;      IPTABLES:  …

    Linux干貨 2017-01-10
  • N26-博客作業-week12

    1、請描述一次完整的http請求處理過程; (1) 建立或處理連接:接收請求或拒絕請求; (2) 接收請求:接收來自于網絡上的主機請求報文中對某特定資源的一次請求的過程; (3) 處理請求:對請求報文進行解析,獲取客戶端請求的資源及請求方法等相關信息; (4) 訪問資源:獲取請求報文中請求的資源; (5) 構建響應報文: (6) 發送響應報文: (7) 記錄…

    Linux干貨 2017-05-23
  • lvs-nat集群

    lvs-nat算法 nat模型樣式 vs服務器:公網地址 172.18.250.253 私網地址 192.168.57.129 (DIP) 各私網服務器網關指向服務器DIP 各私網服務器做集群:web (telnet,ssh) 私網服務器使用httpd實現 rs私網服務器1 centos7 ip:192.168.57.132 rs私網服務器2 centos6…

    Linux干貨 2017-05-15
欧美性久久久久