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 17:01
下一篇 2017-07-29 17:09

相關推薦

  • 腳本

    1、寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin);分別這兩類用戶的個數;通過字符串比較來實現;     #!/bin/bash     #     sum=0 &n…

    Linux干貨 2016-12-23
  • 題外:自制小linux

    自制小linux 系統 制作環境的概述 首先你的有VMware的虛擬機軟件,其次安裝了centos6/centos7的linux系統 而且你需要寫一個復制相關命令以及依賴庫文件的的腳本(主要是為了省時間,腳本寫法會在后面備注)準備好以上環境,便可以制作一個小linux系統了,具體步驟如下 1)  在虛擬機設置中,在原有基礎上在掛載一個20G大小的硬…

    2017-04-04
  • 硬鏈接與軟鏈接

    1、關于硬鏈接和軟鏈接是什么   硬鏈接與軟鏈接是 Linux 文件系統中的一個重要概念,其涉及文件系統中的索引節點 (index node 又稱 inode),而索引節點對象是 Linux 虛擬文件系統 (VFS) 的四個基本概念之一。通過剖析硬鏈接與軟鏈接的聯系與區別,我們可更好的了解 Linux 中 VFS 這一通用文件模型。 (1…

    Linux干貨 2016-10-20
  • 第六章:文本處理工具

    第六章:文本處理工具 文本查看命令(cat) 分頁查看文件(more) 文本查看上下翻頁(less) 顯示頭部(head) 顯示尾部(tail) 按列抽取文本cut 合并文件paste 收集文本統計數據wc 文本排序sort 刪除重復uniq 比較文件diff 復制對文件改變patch 文本搜索工具grep egrep 及擴展的正則表達式 作業: 第六章:文…

    Linux干貨 2016-08-10
  • 網絡管理2

    一、知識整理 1、網卡配置文件格式:vim /etc/sysconfig/network-scripts/ifcfg-eth0 TYPE=Ethernet接口類型,常見的類型有Ethernet,Bridge BOOTPROTO=static設置靜態還是DHCP獲取IP,static和none都為靜態,不寫此行必須指定。查看配置DHCP之后的信息: cat /…

    Linux干貨 2016-09-07
欧美性久久久久