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

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 16:13
下一篇 2016-08-08 16:13

相關推薦

  • 2015 | 月入過萬,再不看你就會后悔

    新的一年,又是一個輪回的開始,又有很多學員加入了我們的征途!我們本著武俠精神,傳經授道,助你仗劍走天涯。為了讓新的學員更加有信心我們特此列一些學員反饋的就業情況,傳播正能量,我們承諾以下情況絕對真實,可找學員核實。 學員高薪就業 以上只是小部分學員,還有非常多的學員在淘寶、大眾點評、騰訊、攜程、新浪、九城、百度、搜狐、華泰證券、民生銀行、360、樂視網等等5…

    2015-03-09
  • 馬哥教育網絡班20期+第11周博客作業

    1、詳細描述一次加密通訊的過程,結合圖示最佳。 例如:     bob給alice發送一份數據:只能alice看到,不能被篡改。     bob:     首先用單向加密提取數據的特征碼,然后用自己的私鑰加密這個特征碼并放在原有數據的后面;…

    學員作品 2016-09-15
  • 腳本例子

    1、每隔3秒鐘到系統上獲取已經登錄的用戶的信息;如果發現用戶hacker登錄,則將登錄時間和主機記錄于日志/var/log/login.log中,并提示該用戶退出系統。 #!/bin/bash #author:Zhu Chaoming #date:20160816 #version:0.1 # while   true…

    學員作品 2016-08-22
  • 馬哥教育網絡班20期+第10周博客作業

    4、寫一個腳本   (1) 能接受四個參數:start, stop, restart, status    start: 輸出“starting 腳本名 finished.”    …   (2) 其它任意參數,均報錯退出;     #!bin/b…

    學員作品 2016-12-05
  • Linux中的高級文本編輯器神器vim

    Vi(Visual Interface):是一種文本編輯器,所謂文本數據是基于字符編碼的文件,常見的編碼有ASCII編碼,UNICODE編碼等等。 文本編輯器的種類:        行編輯器:所謂行編輯器是指一行一行來編輯處理的工具,如sed。   全屏編輯器:編輯空間占據整個屏幕,如nano,vi。 Vim…

    學員作品 2016-08-10
  • 文本處理三劍客:sed篇

    Stream EDitor, 行編輯器 Sed主要用來自動編輯一個或多個文件,簡化對文件的反復操作,編寫轉換程序等。 工作原理: sed是一種流編輯器,如上圖所示,它一次處理一行內容,將讀入的那行內容送入模式空間,然后根據sed的編輯命令對其進行響應的操作,處理完成后sed默認會把模式空間中的內容打印至標準輸出,如果指定了-n選項,則會禁止這種默認的打印行為…

    學員作品 2016-08-10
欧美性久久久久