Linux 文本處理,文本工具,查看,分析,統計文本文件,grep,正則表達式

文本處理

各種文本工具,查看,分析,統計文本文件

grep

正則表達式

擴展正則表達式

sed

cat -n f1

加行號(空格行都計算)

QQ圖片20160805200612.png

cat -b f1

加行號(只計算有字符的行)

QQ圖片20160805200722.png

cat -ns f1

加行號(壓縮空行)

cat -v f1

能看windows文件的M`符號

QQ圖片20160805201201.png

cat -T f1

能夠顯示里面的tab空位,顯示為^I

QQ圖片20160805201509.png

cat -A f1

能夠顯示所有的=-vET

QQ圖片20160805201615.png

cat 命令是一個標準輸入到標準輸出

tac f1

將文本內容倒向顯示

QQ圖片20160805201718.png

rev f2

echo {1..10} >>f2

01 9 8 7 6 5 4 3 2 1 

將文本反向顯示(內容為字符顯示)

QQ圖片20160805202006.png

QQ圖片20160805202021.png

more 

    space空格一頁一頁翻

    q :退出

    回車翻一行

less 

    d:翻半屏

   / :文本搜索

  n/N:跳到上一個或者下一個匹配 

head 頭

head -n 3

     -3 /var/log/messages   頭三行顯示

QQ圖片20160805202530.png

tail 后                     

tail -n 10 /var/log/messages  后10行的顯示

QQ圖片20160805202647.png

tail -f /var/log/messages 自動顯示更新的日志內容(保持顯示內容)

QQ圖片20160805203255.png

tail -n 0 -f /var/log/message & 

日志有新信息就顯示,沒新信息都不出現 (在后臺運行)

fg 1 

Ctrl +C (要切換回前臺在結束)

QQ圖片20160805210154.png

tail -c 10 f1

顯示后10個字符(包括空格,符號。)

QQ圖片20160805203413.png

按列抽取文本cut和合拼文件paste

 cut

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

     -f : 

         #:第#個字段

         #,#[,#]:離散的多個字段,例如1,3,6

         #-#:連續的多個字段,例如1-6

        混合使用:1-3,7

     -c : 按字符切割

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

     cut

cut -d: -f1,3,7 passwd

取出用:分隔的1.3.7列取出成行

QQ圖片20160805203720.png

cut -c44-46 f1

取出字符第44到46列,取出顯示成行

QQ圖片20160805203904.png

ifonfig | head -2 |tail -1 |cut -d: -f2| cut -d" " -f1

QQ圖片20160805204247.png

paste 橫行合并ca

      -d 分隔符:指定分隔符

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

wc 文本數據統計

   wc + 文件

   wc +  +文件

        -l :行

        -c :多少個字節總數

        -m :計算字符總數

        -w :顯示單詞總數

QQ圖片20160805204337.png

sort  

    整理過文本顯示

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

    -n:執行按數字大小整理

    -f:忽略字符串的字符大小寫

    -u:刪除多余的空行

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

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

uniq 

    uniq f1

    相鄰的相同的刪去,不相鄰的不刪除

    -c :顯示所有行重復的次數

    -d :只顯示重復的

    -u :只顯示不重復的

sort f2 |uniq -c 

QQ圖片20160805204836.png

netstat -nt 

cut -d: -f1,3,7 /etc/passwd |sort -t: -k2 -n

QQ圖片20160805205107.png

netstat -nt |tr -s " " ":"|cut -d: -f6 |tail -n +3|sort -n |uniq -c

diff

     -u

diff f1 f2 -u > diff.log 對比f1 與f2 的不同賦予diff.log

rm -f f2

patch -b f1 diff.log   自動備份

patch 

     -b 自動備份改變了的文件

grep :文本過濾工具

    grep,egrep,fgrep(不支持正則表達式搜索)

sed: stream editor,文本編輯工具

awk:Linux 上實現gawk,文本報告生成器

grep 

    :作用文本搜索工具

ls -R 

grep root /etc /passwd /etc/shadow

    -v:不包括指定的 顯示出來

    -i: 忽略大小寫

    -n:顯示對應的行號

    -c:統計匹配的行數目

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

    -q:靜默模式,不輸出任何信息

       echo $?

               0就成功了,1是不成功。

    -A:after,將指定的關鍵字后面N行顯示出來

    grep -nA3 root /etc/passwd

    -B:before,指定關鍵字前面N行顯示

    -C:前兩行,后兩行都顯示出來

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

    grep -e root -e bash /etc/passwd

    -w:整行匹配整個單詞

       指的是整個單詞搜索

    -E:使用ERE

    -F:等于使用fgrep 

正則表達式

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

分兩類:

      基本正則表達式:BRE

      擴展正則表達式:ERE

             grep -E,egrep

正則表達式引擎:

    采用不同算法,檢查處理正則表達式的軟件模塊

    PCRE

元字符分類:字符匹配,匹配次數,位置錨定,分組

man 7 regex

     . : 匹配任意單個字符

         

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

     grep r[a-z]t /etc/passwd

QQ圖片20160805212723.png

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

     

匹配次數:用在要指定次數的字符后面,用于指定前面的字符要出現的次數。

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

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

     .*:任意長度的任意字符

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

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

  \{m\}:匹配前面的字符m次

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

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

 \{m,\}:匹配前面的字符最少m次

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

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

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

         grep -v ''

         ^PATTERN$:用于匹配整行

                   ^$:空行

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

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

         grep '\bro'f1

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

          \<PATTEN\>:匹配整個單詞

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

  如: \(root\)\+

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

df |grep '/dve/sd'

nmap -sP -v 10.1.252.210/24 |grep -B1|grep -v

grep "\b[1-9][0-9][0-9]\b"

grep \(bash\+\(testbash\+\(basher\+\(nologin)*\)+ 

grep –color '^\<\(.*\)\>.*\b\1\b$' /etc/passwd

grep '^\(.*\).*/\1$' /etc/passwd

QQ圖片20160805214201.png

egrep 擴展的正則表達式

egrep = grep -E

       .任意次數

       []指定范圍的字符

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

次數的匹配

       *:匹配前面字符任意次數

       ?:0或1次

       +:1次或多次

      {m}:匹配m次

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

位置錨定:

      ^:行首

      $:行尾

      \<,\b:首

      \>,\b:尾

分組:

     ()

     后向引用:\1,\2

或者:

     a|b

     C|cat: C或cat

     (C|c)at:Cat或cat

egrep '^(zczx|root)\b' /etc/passwd |cut -d: -f3,7

QQ圖片20160805214406.png

echo "/etc/isse" | egrep -o "[^/]+/?$"

                 | egrep -o "(/.*)"

QQ圖片20160805214710.png

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

(0)
swzczxswzczx
上一篇 2016-08-07
下一篇 2016-08-07

相關推薦

  • 馬哥教育網絡班22期+第三周課程練習

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。  ~]# who |sort -nu root     pts/0        2016-08-…

    Linux干貨 2016-08-29
  • Linux文本處理工具及組管理

    1、列出當前系統上所有已經登錄的用戶名,注意:同一個用戶登錄多次,只顯示一次即可 [root@centos ~]# who | cut -d' ' -f1 | sort -u     gentoo &…

    Linux干貨 2016-10-09
  • 命令組合

    1 取出當前已登陸的用戶名 2 取出最后登錄用戶的相關信息 3 取出默認shell最多的的類型   4 轉移    [redsun@jiange root]$ sort -t: -k3 -n -r  /etc/passwd | sed -n "1,+3p" | tr 'a-z' …

    Linux干貨 2016-11-13
  • 內置數據結構,列表及其方法

    List:列表有若干個元素,元素可以是任意對象,元素有順序,可以使用索引和迭代,使用線性結構,使用[ ]進行描述,在內存中的空間是連續的,每個元素在內存中的空間是一樣的………列表是可變的,列表不能一開始就定義大小,列表索引不可以超界   列表索引l.index(),從左向右搜索,發現第一個匹配的,自動返回搜索的值的索引;匹配不到,拋出異常Value…

    Linux干貨 2018-03-25
  • 用戶及權限管理

    新建用戶用到的相關文件/etc/default/useradd /etc/login.defs /etc/skel/* 批量創建用戶1.創建用戶列表user.txt(文件格式同/etc/passwd) 2.newusers user.txt 3.創建密碼文件passwd.txt(格式  用戶名:密碼) 4.cat passwd.txt | chpa…

    Linux干貨 2016-08-11
  • bash 循環語句while、until練習

    bash 循環語句while、until while練習題          1、求100以內所有正整數之和     2、通過ping命令探測172.16.250.1 – 254范圍內的所有主機的在線狀態,統計在線主機和…

    Linux干貨 2016-08-19
欧美性久久久久