文本處理工具初探

作為一個系統管理員,文本處理功能是經常使用的,熟練地使用各種文本工具有助于提高工作效率,從繁忙的工作中早點解脫。下面就來介紹處理文本的常用命令。

處理文本的命令大致分為:

       查看文件內容:cat、less、more

       按行抽取文件內容:head、tail

       按列抽文件內容?。篶ut

       統計文本:wc

       整理文本:sort、uniq

       比較文本:diff、patch

一、查看文件內容

    1、cat:讀取一個或多個文件,然后復制到標準輸出。

    用法:cat  [options]  file1  [file2…]

     常用的options有:

       -n: 對顯示出的每一行進行編號

       -b: 對顯示出的非空行進行編號

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

       -A: 顯示所有的控制符,如:tab、換行、行結束符等。

      -E: 顯示行結束符。在linux,行結束符用$標識。

blob.png

壓縮連續的空行:

blob.png

2、less和more:分頁查看工具

  用法:less|more  file

    “回車”:查看下一頁

    “b”:查看上一頁

    “enter”:查看下一行

    “p“:查看上一行。

區別:more不能使用”p”查看上一行,并且more在查看到文件底部時,會退出查看,而less仍然是查看狀態。

總結:在查看內容較少的文件時,建議使用cat,在查看文件內容較多的文件時,建議使用less。

二、按行截取文件內容

  1、查看文件的前n行:head

   用法:head  [options]  file

   常用的options:

     -n #:指定獲取前#行的內容。如果未指定,默認顯示前10行。

    例:顯示/etc/passwd前8行的內容

blob.png

 

 2、查看文件的后n行:tail

  用法:tail [options] file

  常用options:

   -n #: 指定獲取后#行的內容。如果未指定,默認顯示后10行。

   -f: 跟蹤顯示文件新追加的內容,常用日志監控

   tail –f 可以簡寫為tailf

例2.1:顯示/etc/passwd后8行的內容:

blob.png

 

例2.2:追蹤查看/var/log/messages文件。

若只想查看新增的日志內容,可以指定:tailf –n 0 /var/log/messages

退出查看“ctrl + c“

blob.png

 

三、按列抽取文本:cut

  文本中的內容,并不是每一行都是我們需要的。比如,我只需要/etc/passwd文件中的用戶名、用戶id、用戶登錄shell,這時,就需要按列隊文本進行處理。

  用法: cut  [options]  file

  常用options:

    -d  Delimiter:指明分隔符,默認為tab。也可以為“ “(表示空白)、”:”等。

    -f  Fileds: 指明顯示分割后的那些列。      

     顯示模式:

     1)、#:第#個字段

     2)、#,#: 離散的多個字段。如 1,3,7

     3)、#-#:連續的多個字段

     4)、混合使用,將上述三種模式混合。如:1,3,5-7.

可以和管道配合,這樣能觀察文本的格式特點,對其進行分隔

例:顯示/etc/passwd文件中的用戶名、用戶id、用戶登錄shell。

blob.png

也可以不和管道配合,直接切割文件

blob.png

cut命令也常合其他系統管理命令配合使用,對其中的某個參數進行監控。

例: 取出磁盤空間使用率

blob.png 

tr –s “ “  “:”:將多余的空格合并為一個,并替換為“:“。

四、統計文本wc

法:wc [options]  file

常用options:

  -l :只統計行數

  -w:統計單詞數

例:統計/etc/passwd有多少行,有多少個單詞。

blob.png

五、整理文本

對文本進行排序,去掉重復的行等。

5.1、sort

  用法:sort [options] file

  常用options:

    -n :按數字進行排序。不指定默認按字符進行排序,數字也被當作字符

    -r:逆向排序。

    -u:刪除輸出中重復的行

    -t Delimiter:指定分隔符

    -k #:按分隔后的知道字段進行排序。

例:/etc/passwd按id進行排序

blob.png

/etc/passwd按id逆向排序

blob.png 

5.2、uniq:刪除重復的前后相接的行

  用法:unip [options] file

  常用options:

   -c :顯示每行重復出現的次數

   -d :僅顯示重復過的行

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

例:統計當前遠程登陸到本機的ip地址及其連接數

blob.png

六、文本比較:diff

  用法:diff  file1  file2 比較兩個文本之間的區別。

diff命令的輸出被保存在一種叫做“補丁”的文件中,配合patch命令對文件版本管理。

  常用options:

    -u 選項來輸出“統一的( unified)” diff格式文件,最適用于補丁文件。

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

例:復制/etc/fstab到當前文件,一名為fs1,一名為fs2,對fs2進行修改,在第一行添加“last modify“。之后通過補丁將fs1的內容更新為fs2的內容。

blob.png

 

文本處理三劍客grep、sed、awk放在后續的文章中介紹

原創文章,作者:M20-1鐘明波,如若轉載,請注明出處:http://www.www58058.com/29753

(0)
M20-1鐘明波M20-1鐘明波
上一篇 2016-08-07
下一篇 2016-08-07

相關推薦

  • 刪除并恢復

    1.刪除/lib64/libc.so.6 ,并恢復之。 centos7.3:重啟→進入救援模式→cd  lib64→cp libc.so.6  /mnt/sysimage/lib64 →exit,選擇第二個白條(救援),即可恢復; centos6.9:重啟→進入救援模式→cd  lib64→cp libc.so.6  …

    2017-06-11
  • Linux shell腳本編程練習題

    《書籍上面的練習題》 問題:誰在霸占磁盤資源?     如果您負責的Linux服務器上有許多用戶,則經常需要解決的一個問題就是誰在使用所有磁盤空間。這是個老掉牙的問題有時比其他問題更難以弄清。     不幸的是,雖然跟蹤用戶磁盤空間使用情況非常重要,但卻沒有一個Linux命令可以提供此信息。因此需要…

    Linux干貨 2016-06-09
  • 描述計算機的組成及其功能

    CPU:計算器,控制器,寄存器內存輸入輸出設備

    Linux干貨 2016-08-15
  • rpm與yum的簡單命令

                                  …

    Linux干貨 2017-04-18
  • linux運維

    linux運維大綱,學習路線圖

    Linux干貨 2017-10-21
  • N22-第三周課堂練習

    — 1.列出當前系統上所有已經登錄的用戶的用戶名,注意:用一個用戶登錄多次,則只顯示一次即可。     who | awk '{print $1}' | uniq 2.取出最后登錄到當前系統的用戶相關信息。   last | head -n 1 3.取出當前系統上被用戶當作其默認shell的最多的…

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