Linux 基礎(7)——文本處理工具

cat  tac  rev  more  less           head  tail

cut  paste  wc                         sort  uniq  diff

grep  正則表達式                      egrep 擴展正則表達式

1. cat  tac  rev  more  less

(1)cat 查看

            -E 顯示$ 換行符

            -T 顯示TAB

            -v 顯示非打印字符

            -n 顯示行號

            -s 將連續的重復空行變成一行

            -A = -vET

Linux 基礎(7)——文本處理工具

(2)tac   只行顛倒,每行的內容不顛倒

Linux 基礎(7)——文本處理工具

(3)rev

Linux 基礎(7)——文本處理工具

(4)分頁查看文件內容

 more:  分頁查看文件,空格翻頁,q退出

 less :一頁一頁地查看文件

          / 文本   搜索文本

          n 跳到下一個    N跳到上一個

          less 命令是man 命令使用的分頁器

2. head  tail

(1)head  (默認顯示前10行)

                 -n 行號        顯示前n行    或 -行號 顯示前n行

                 -c 字節數     顯示前n個字節

 

(2)tail    (默認顯示后10行)

                 -n 行號       顯示后n行      或   -行號 顯示后n行

                 -c 字節數    顯示后n個字節

                 -f 動態顯示

 例1:顯示/etc/passwd文件的第11行至第20行

       head -n 20 /etc/passwd |tail

Linux 基礎(7)——文本處理工具

例2:利用 cat /dev/urandom 生成10位字符長度的隨機密碼(包含大小寫字母及數字)

        cat  /dev/urandom  | tr -d -c [:alnum:] | head -c 10 ;echo

Linux 基礎(7)——文本處理工具

3. cut  paste  wc

(1)cut

             -d 指定分隔符

             -f  n[,n-r] 選取第幾列

             –output-delimiter 指定輸出符

 例1:cut -d: -f1,3 –output-delimiter=’.’ /etc/passwd

Linux 基礎(7)——文本處理工具

例2:顯示當前主機第一個網卡的IP地址

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

Linux 基礎(7)——文本處理工具

例3:查出/app目錄的空間使用量

        df|tr -s ” ” % |head -n 4 |tail -n 1 |cut -d% -f5

        df |head -n 8 |tail -n 1 |cut -c 44-46

Linux 基礎(7)——文本處理工具

(2)paste  粘合

        paste f1 f2 [f3]

        paste -s f1 將文件內容變成一行顯示 ,也可以用 tr ‘\n’ ‘\t’ 實現

        paste -d “” f1 f2 [f3] 合并后的分隔符,默認TAB

Linux 基礎(7)——文本處理工具

(3)wc: word count  統計

             -m 字符數   一個漢字算1個字符

             -c 字節       一個漢字算3個字節

             -l 行數

             -w 單詞數

       wc 行數 單詞數 字節

Linux 基礎(7)——文本處理工具

4. sort  uniq  diff

(1)sort 排序

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

             -n    執行按數字大小整理

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

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

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

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

Linux 基礎(7)——文本處理工具

(2)uniq 去除連續的重復行

       要想去除非連續的行,先用sort排序

              -c 顯示連續重復的次數

              -d 僅顯示重復的次數

              -u 僅顯示不曾重復的行

Linux 基礎(7)——文本處理工具

 

(3)diff f1 f2    僅比較區別

        diff -u f1 f2 > diff.log 生成補丁

        mv f2 f2.rm  相當于刪除了文件。

        patch -b f1 diff.log    通過補丁還原文件 ,生成的f1為原來的f2,fi.orig為原f1

        mv f1 f2    還原原始的新文件名

        mv f1.orig f1  還原原始的舊文件名

        diff f2 f2.rm  比較還原回來的新文件與被刪除的文件,發現沒有區別。

Linux 基礎(7)——文本處理工具

6. grep

grep  :  由正則表達式字符及文本字符所編寫的過濾條件

grep root /etc/passwd

grep “$USER” /etc/passwd

grep `whoami` /etc/passwd

Linux 基礎(7)——文本處理工具

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

 -v:顯示不被pattern 匹配到的行  [^] 反向

 -i: 忽略字符大小寫

 -n:顯示匹配的行號

 -c:  統計匹配的行數

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

 -q:  靜默模式,不輸出任何信息     或 &> /dev/null

 -A #: after,  后#行

 -B #: before,  前#行

 -C # :context,  前后各#行

Linux 基礎(7)——文本處理工具

 -e :實現多個選項間的邏輯or 關系   相當于“…\|…”

 -w :匹配 整個單詞

Linux 基礎(7)——文本處理工具

 -E :使用ERE

 -F :相當于fgrep

7. 正則表達式

1). 匹配任意單個字符

       [] 匹配指定范圍內的任意單個字符

       [^] 匹配指定范圍外的任意單個字符

       [:alnum:] 或 [0-9a-zA-Z]

       [:alpha:] 或 [a-zA-Z]

       [:upper:] 或 [A-Z]

       [:lower:] 或 [a-z]

       [:blank:] 空白字符(空格和制表符)

       [:space:] 水平和垂直的空白字符(比[:blank:]包含的范圍廣)

       [:cntrl:] 不可打印的控制字符(退格、刪除、警鈴…)

       [:digit:] 十進制數字 或[0-9]

       [:xdigit:]十六進制數字

       [:graph:] 可打印的非空白字符

       [:print:] 可打印字符

       [:punct:] 標點符號

 

2)*  匹配前面的字符任意次,包括0次

            貪婪模式:盡可能長的匹配

        .*  任意長度的任意字符

        \?  匹配其前面的字符0 或1次

        \+  匹配其前面的字符至少1次

        \{n\}  匹配前面的字符n次

        \{m,n\}  匹配前面的字符至少m 次,至多n次

        \{,n\}  匹配前面的字符至多n次

        \{n,\}  匹配前面的字符至少n次

Linux 基礎(7)——文本處理工具

 

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

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

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

            ^PATTERN$ 用于模式匹配整行

            ^$ 空行      grep -v ^$  或 tr -s ‘\n’

Linux 基礎(7)——文本處理工具

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

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

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

         \<PATTERN\>

 

4)分組:\(\)  將一個或多個字符捆綁在一起,當作一個整體進行處理,如:\(root\).*

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

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

Linux 基礎(7)——文本處理工具

       后向引用:引用前面的分組括號中的模式所匹配字符 , 而非模式本身   

       或者:\|      例:a\|b: a 或b C\|cat: C 或cat \(C\|c\)at:Cat 或cat

8. egroup 及 正則表達式

egrep         egrep = grep -E

     擴展的正則表達式 (除了\< , \> , \b 其他的都去掉\)

(1)  字符匹配:

         .  任意單個字符

         []  指定范圍的字符

         [^] 不在指定范圍的字符

(2) 次數匹配:

         * :匹配前面字符任意次

         ?  : 0 或1次 次

        + :1 次或多次

        {m} :匹配m次 次

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

(3)位置錨定:

        ^ : 行首

        $ : 行尾

        \<, \b : 語首

        \>, \b : 語尾

(4)分組:()

       后向引用:\1, \2, …

       或者:a|b: a 或b  例:C|cat: C 或cat  (C|c)at:Cat 或cat

 

 

 

 

 

 

 

 

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

(0)
alongalong
上一篇 2017-07-29
下一篇 2017-07-29

相關推薦

  • gawk 語法介紹及其實例

    gawk 語法介紹及其實例  §·awk介紹 Linux文本處理三劍客:grep  sed 和 awk 。其中grep是一種文本過濾工具,sed是文本行編輯器,而awk是一種報表生成器,就是對文件進行格式化處理的,這里的格式化不是文件系統的格式化,而是對文件的內容進行的各種排版,進而格式化顯示。 在linux之上我們使用awk是GUN a…

    Linux干貨 2016-09-22
  • N24_星空學習宣言

    學習是一種投資,既然投資了就不能虧損,努力學習,做一個學習界的巴菲特!

    Linux干貨 2016-10-24
  • Linux mdadm命令解析

    mdadm命令解析 一,在Linux系統中目前MD(Multiple Devices)虛擬塊設備的方式實現軟件RAID,利用多個底層的塊設備虛擬出一個新的虛擬設備,并且利用條帶化(stripping)技術將數據塊均勻分布到多個磁盤上來提高虛擬設備的讀寫性能,利用不同的數據冗余算法來保護用戶數據不會因為某個塊設備的故障而完全丟失,而且還能在設備被替換后將丟失的…

    Linux干貨 2017-08-31
  • Linux的發行版及哲學思想

    Linux是一套免費使用和自由傳播的類Unix系統,是一個基于Unix的多用戶、多任務、支持多線程和多CPU的操作系統。它能運行主要的工具軟件、應用程序和網絡協議。它支持32位和64位硬件,是一個性能穩定的多用戶網絡操作系統。嚴格來講,Linux這個詞本身只表示Linux內核,聯合GNU 組織里的各種強大的應用軟件而組成的操作系統。 從Linux的誕生至今,…

    Linux干貨 2016-10-30
  • 任務計劃

    Linux 任務計劃、周期性任務執行 未來的某時間點執行一次任務 at batch :系統 自行選擇空閑時間去執行此處指定的任務 周期性運行某任務 cron [root@localhost ~]# rpm -q at (CentOS6中使用) at-3.1.10-48.el6.x86_64 [root@localhost ~]# rpm -ql at /et…

    Linux干貨 2017-05-13
  • Hadoop簡介

    Hadoop的概要介紹 Hadoop,是一個分布式系統基礎架構,由Apache基金會開發。用戶可以在不了解分布式底層細節的情況下,開發分布式程序。充分利用集群的威力高速運算和存儲。 簡單地說來,Hadoop是一個可以更容易開發和運行處理大規模數據的軟件平臺。該平臺使用的是面向對象編程語言Java實現的,具有良好的可移植性。 Hadoop的發展歷史 &nbsp…

    Linux干貨 2015-04-13
欧美性久久久久