文本處理工具系列(一):文本的查看、分析、統計和文本過濾工具

1、文本的查看、分析和統計工具

   <1>文本查看工具  cat tac rev more less head  tail  cut  paste

      cat

        -A:顯示所有隱藏的控制符

        -n:顯示行號

        -s:壓縮連續的空行至一行

[root@centos6 testdir]# cat -A -n f4
     1	a  $
     2	^I$
     3	b$

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

     paste [OPTION]… [FILE]…

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

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

[root@centos6 testdir]# paste -d* f1 f2
*
CentOS release  6.8(Final)*CentOS release  6.8(Final)
Kernel \r on an \m*Kernel \r on an \m
\l*\l
\n*\n
\t*\t
[root@centos6 testdir]# paste -s f1 f2
	CentOS release  6.8(Final)	Kernel \r on an \m	\l	\n	\t
	CentOS release  6.8(Final)	Kernel \r on an \m	\l	\n	\t

      tac:縱向反向查看內容

      rev:橫向反向查看內容

[root@centos6 testdir]# tac f1
abc
c
b
a
[root@centos6 testdir]# rev f1
a
b
c
cba
[root@centos6 testdir]# cat f1
a
b
c
abc

      more:文本查看工具

      less:more的升級版,功能更加強大,man命令使用的分頁器

        翻頁

        space: 向下翻一頁

        b:向上翻一頁

        ctrl+d:向下翻半頁

        ctrl+u:向上翻半頁

        enter:向下翻一行

        命令

        !:可臨時執行命令

        查找

        / KEYWORD:向上搜索

           n:同向搜索

           N:反向搜索

        ? KEYWORD:向下搜索  

           n:同向搜索

           N:反向搜索

      head:默認查看前十行

        -#:查看文本的前幾行

      tail:默認查看后十行

        -#:查看文本的后十行

        注意:這倆者組合可查看特定的一行

              監控日志:tail -n 0 -f /var/log/messages &  

              查看后臺程序:jobs

              調出后臺程序:fg1

      cut [OPTION]… [FILE]…

         -d 分隔符:指明分隔符

         -f:指明截取字段           

             #: 第#個字段

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

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

             混合使用:1-3,7

   <2>文本統計工具  wc  sort  uniq

      wc [OPTION]… [FILE]…

        常用選項:

          -l:記錄行數

          -w:記錄單詞數

          -c:記錄字符數

      sort [OPTION]… [FILE]…

        命令功能:排序

        常用選項

          -n:按照數字大小排序

          -r:反向排序

          -t:指定分隔符

          -k:指定排序的字段

      uniq [OPTION]… [INPUT [OUTPUT]]

        命令功能:統計

        常用選項

          -c:顯示相鄰的行重復的次數         

          -d: 僅顯示相鄰重復過的行

          -u: 僅顯示相鄰不曾重復的行

[root@centos6 testdir]# cat f1
a
a
c
a
[root@centos6 testdir]# uniq -d f1
a
[root@centos6 testdir]# uniq -u f1
c
a

      注意:常用sort | uniq -c組合統計重復的行

   <3>文本分析工具

      diff FILE1 FILE2

[root@centos6 testdir]# cat f1
a
b
c
[root@centos6 testdir]# cat f2
a
[root@centos6 testdir]# diff f1 f2
2,3d1
< b
< c
[root@centos6 testdir]# diff f2 f1
1a2,3
> b
> c

2、文本過濾工具—grep和egrep

   <1>介紹正則表達式

      一種通過匹配模式,對文本進行行過濾的工具,在很多文本編輯器里,正則表達式通常被用來檢索、替換那些符合某個模式的文本。由于正則表達式主要應用對象是文本,因此它在各種文本編輯器場合都有應用,小到著名編輯器EditPlus,大到Microsoft Word、Visual Studio等大型編輯器在各種編程語言中應用廣泛,入門較難,但只要正真理解,你就會發現它的強大。grep是應用正則表達式的工具,egrep只是在grep的基礎上做了簡單的升級,并無實質性差異。 

   <2>grep用法格式

      grep [OPTIONS] PATTERN [FILE…]

      常用選項        

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

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

        -i: 忽略字符大小寫

        -q:靜默模式,常用于條件判斷

        -A #: after, 后#行        

[root@centos6 testdir]# grep -A1 ^root /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin

        -B #: before, 前#行

        -C #:context, 前后各#行

        -E:使用ERE

   <3>正則表達式和擴展正則表達式匹配模式

      注:空白處無意義

分類

符號

ERE

BRE

字符匹配

.

單個字符

單個字符

字符匹配

?

字符匹配

*

其前面的字符任意次

其前面的字符任意次

字符匹配

.*

任意長度任意字符

任意長度任意字符

字符匹配

[]

指定范圍內任意一個字符

指定范圍內任意一個字符

字符匹配

[^]   

指定范圍外任意一個字符

指定范圍外任意一個字符

字符匹配

[0-9]

任意一個數字

任意一個數字

字符匹配

[a-z]

任意一個小寫字母

任意一個小寫字母

字符匹配

[A-Z]

任意一個大寫字母

任意一個大寫字母

字符匹配

[[:digit:]]

任意一個數字

任意一個數字

字符匹配

[[:lower:]]

任意一個小寫字母

任意一個小寫字母

字符匹配

[[:upper:]]

任意一個大寫字母

任意一個大寫字母

字符匹配

[[:alpha:]]

任意一個字母

任意一個字母

字符匹配

[[:alnum:]]

任意一個字母或數字

任意一個字母或數字

字符匹配

[[:space:]]

任意一個空格符

任意一個空格符

字符匹配

[[:punct:]]

任意一個標點符號

任意一個標點符號

位置錨定

^

錨定行首

錨定行首

位置錨定

$

錨定行尾

錨定行尾

位置錨定

\<

錨定詞首

錨定詞首

位置錨定

\>

錨定詞尾

錨定詞尾

次數匹配

\?;?

前面的字符0次或1次

前面的字符0次或1次

次數匹配

\+;+

前面的字符至少1次

前面的字符至少1次

次數匹配

m次,格式\{m\}

m次,格式{m}

次數匹配

至少m次,格式\{m,\}

至少m次,格式{m}

次數匹配

至多n次,格式\{0,n\}

至多n次,格式{0,n}

次數匹配

m次到n次,格式\{m,n\}

m次到n次,格式{m,n}

分組引用

\1,\2分組,格式\(\)

\1,\2分組,格式()

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

(0)
mfwingmfwing
上一篇 2016-08-08
下一篇 2016-08-08

相關推薦

  • for,while,until循環

    一、用until實現下列作業 1、每隔3秒鐘到系統上獲取已經登錄的用戶的信息;如果發現用戶hacker登錄,則將登錄時間和主機記錄于日志/var/log/login.log中,并提示該用戶退出系統。 #!/bin/bash until  who | grep "^\<hacker\>" > /var/log/l…

    學員作品 2016-08-22
  • linux中用ACL實現靈活的權限管理

    ACL是什么?? ACL英文原意是Access Control List(訪問控制列表).它能夠實現靈活的權限管理,除了文件的所有者,所屬組和其他人,設置相應的權限外,ACL允許你給任何用戶或是用戶組設置任何文件/目錄的訪問權限(注意的是有些不支持數字模式的權限給定) ACL有什么用?? 作為UGO權限管理的補充,acl有GUO辦不到或者是難以辦到的功能 &…

    Linux干貨 2016-08-05
  • 馬哥教育網絡班20期+第9周博客作業

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

    學員作品 2016-09-10
  • 馬哥教育網絡班20期-第八周課程作業

    1、請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別。 網橋將兩個相似的網絡連接起來,并對網絡數據的流通進行管理。它工作于數據鏈路層,不但能擴展網絡的距離或范圍,而且可提高網絡的性能、可靠性和安全性。 集線器的英文稱為“Hub”。主要功能是對接收到的信號進行再生整形放大,以擴大網絡的傳輸距離,同時把所有節點集中在以它為中心的節點上。它…

    學員作品 2016-09-08
  • Linux 用戶,組和用戶權限的使用

    echo -e "Hello,I am 'whoami',the system version is here,please helcheck ist  thanks! \n'lsb_release'"| mail -s 'help'root cmd1 |cmd 2 cma1 2&…

    2016-08-05
  • 馬哥教育網絡第20期-第一周作業

    第一周博客作業1、 描述計算機的組成及其功能。 運算器、控制器、存儲器、輸入設備、輸出設備運算器、控制器 :cpu 運算和邏輯計算存儲器:緩存和保存數據輸入設備、輸出設備:用戶和計算機交互設備和界面 2、 按系列羅列Linux的發行版,并描述不同發行版之間的聯系與區別。 Slackware系列: suse   opensuse debian系列: …

    學員作品 2016-06-23
欧美性久久久久