文本處理工具

文本處理工具

一、文本處理命令less,cat,more,sort

1.less

 less :一頁一頁地查看文件或STDIN 輸出

 查看時有用的命令包括:

  /文本  搜索 文本

  n/N 個 跳到下一個 or  上一個匹配

  less 命令是man 命令使用的分頁器

2.cat

文件查看命令:cat, tac,

cat [OPTION]… [FILE]…

-E:  顯示行結束符$

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

-A :顯示所有控制符

-b: 非空行編號

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

cat f1 f2 同列合并  paste f1 f2 同行合并

paste -d 分隔符   -s 所有行合并成一行  

3.more

 more:  分頁查看文件

 more [OPTIONS…] FILE…

 -d:  顯示翻頁及退出提示

4.wc

wc 文件名 得到的是行數  單詞數  字符數

圖片1.png

 使用 -l 來只計數行數

 使用 -w 來只計數單詞總數

 使用 -c 來只計數字節總數

 使用 -m 來只計數字符總數

   字符與字節不相同

5.sort

文本排序sort

把整理過的文本顯示在STDOUT ,不改變原始文件

$ sort [options] file(s)

v 常用選項

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

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

ü -f 選項忽略(fold )字符串中的字符大小寫

ü -u 選項(獨特,unique )刪除輸出中的重復行

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

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

例證:sort -t: -k 3 -n /etc/getent   /etc/getent中以:為分隔符的第三列的內容,按照內容數字大小進行排列,若要倒序排列則+r

圖片2.png 

 

二、文件截取:headtail

1.head

head [OPTION]… [FILE]…

-c #:  指定獲取前# 字節

-n #:  指定獲取前#行 行

-#:  指定行數

2.tail

   tail [OPTION]… [FILE]…

   -c #:  指定獲取后# 字節

   -n #:  指定獲取后#

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

三、按列抽?。?span style="font-family:Calibri">cut

     cut [OPTION]… [FILE]…

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

   -f FILEDS:

   #:  # 個字段

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

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

   混合使用:1-3,7

   -c 按字符切割

   –output-delimiter=STRING

 舉例1cut  -d:  -f1,3,5-7  /etc/passwd

 以:作為分隔符,查看/etc/passwd中的第1,3,5-7列的內容

 舉例2使用cut將電腦的IP地址提取出來。

圖片3.png 

經過觀察,這些信息極為不規則,沒有明顯的分隔符。這時們需要首先提取出IP地址所在的行,然后去定義一個合適的分隔符,再利用cut進行提取即可。(思路:化繁為簡,化不規則為規則,這樣才能更好的套用我們的命令模型)  圖片4.png

四、按關鍵字抽?。?span style="font-family:Calibri">grep

   作用:文本搜索工具,根據用戶指定的“模式”對目標文

本逐行進行匹配檢查;打印匹配到的行;

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

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

 -i:  忽略字符大小寫

 -n: : 顯示匹配的行號

 -c:  統計匹配的行數

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

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

 -A # after,  #行 行

 -B #: before,  #行 行

 -C # context,  前后各#行 行

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

   grep e cat -e dogfile

 -w :整行匹配整個單詞

 -E :使用ERE

 REGEXP :由一類特殊字符及文本字符所編寫的模式,其中有

些字符(元字符)不表示字符字面意義,而表示控制或通配

的功能

v  程序支持:grep, vim, less,nginx等 等

v  分兩類:

基本正則表達式:BRE

擴展正則表達式:ERE

grep -E, egrep

v  正則表達式引擎:

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

PCREPerl Compatible Regular Expressions

   字符匹配:

     . :   匹配任意單個字符;

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

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

     [:digit:] [:lower:] 、[:upper:] 、[:alpha:] [:alnum:]

     [:punct:] 、[:space:]

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

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

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

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

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

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

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

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

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

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

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

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

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

^PATTERN$:  用于模式匹配整行

^$:  空行

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

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

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

\<PATTERN\>

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

行處理,如:\(root\)\+

分組括號中的模式匹配到的內容會被正則表達式引擎記錄

于內部的變量中,這些變量的命名方式為: \1, \2, \3, …

\1:  從左側起,第一個左括號以及與之匹配右括號之間

的模式所匹配到的字符;

實例: \(string1\+\(string2\)*\)

\1: string1\+\(string2\)*

\2: string2

后向引用:引用前面的分組括號中的模式所匹配字符(而 而

非模式本身)

 

實例應用

  一、 tail可用于日志的監視

在命令行輸入:tail -n 20  -f  /var/log/messsages  這樣可以實時監測日志的變化。

圖片5.png 

通過logger this is a test log來觸發新日志的產生

圖片6.png 

tail  -n  0  -f  filename &

 

 

二、比較兩個文件之間的不同或者回復文件

diff -u a.txt  b.txt > diff.log

圖片7.png 

圖片8.png 

[root@centos6testdir]#diff  -u a.txt  b.txt >diff.log

圖片9.png 

上述操作后,a.txtb.txt的差異記錄在了diff.log

若之后,b.txt不小心刪除掉了,則可以利用a.txtdiff.log來恢復b.txt文件。

此時用到patch命令,此時得到的a.txt文件,其內容實際就是誤刪除掉的b.txt文件的內容,而真正的a.txt文件的內容則保留在了a.txt.orig的文件中。

圖片10.png 

圖片11.png 

 

 

 

 

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

(0)
178babyhanggege178babyhanggege
上一篇 2016-08-08
下一篇 2016-08-08

相關推薦

  • gzip壓縮輸出

    一、gzip介紹          gzip是GNU zip的縮寫,它是一個GNU自由軟件的文件壓縮程序,也經常用來表示gzip這種文件格式。軟件的作者是Jean-loup Gailly和Mark Adler。1992年10月31日第一次公開發布,版本號是0.1,目前的穩定版本是…

    Linux干貨 2015-07-29
  • Lua簡明教程

    這幾天系統地學習了一下Lua這個腳本語言,Lua腳本是一個很輕量級的腳本,也是號稱性能最高的腳本,用在很多需要性能的地方,比如:游戲腳本,nginx,wireshark的腳本,當你把他的源碼下下來編譯后,你會發現解釋器居然不到200k,這是多么地變態啊(/bin/sh都要1M,MacOS平臺),而且能和C語言非常好的互動。我很好奇得瀏覽了一下Lua解釋器的源…

    Linux干貨 2016-08-15
  • 硬盤的讀寫原理

     硬盤的種類主要是SCSI 、IDE 、以及現在流行的SATA等;任何一種硬盤的生產都要一定的標準;隨著相應的標準的升級,硬盤生產技術也在升級;比如 SCSI標準已經經歷了SCSI-1 、SCSI-2、SCSI-3;其中目前咱們經常在服務器網站看到的 Ultral-160就是基于SCSI-3標準的;IDE 遵循的是ATA標準,而目前流行的SATA,…

    Linux干貨 2015-04-10
  • redis主從復制(2)— replication buffer與replication backlog

    1、redis主從復制過程先不解釋replication buffer和replication backlog,而先看看redis主從復制的過程。 redis的主從復制分為兩個階段: 1)同步(sync rdb snapshot):slave復制master的某時間點(t)的全量數據,t為master接收到slave的sync命令后執行rdb bgsave的…

    Linux干貨 2016-04-05
  • N22-妙手-第二周博客作業

    1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示     mkdir: 創建目錄         使用方法:mkdir [OPTION]… DIRECTORY…   &n…

    Linux干貨 2016-08-29
  • 網絡N23期第一周(計算機的組成及功能及Linux的發行版等)

    一. 描述計算機的組成及功能 計算機由五大硬件組成:” 運算器 + 控制器 + 儲存器 + 輸入設備 + 輸出設備” 。 運算器(Datapath):運算器的功能是對數據進行各種算術運算和邏輯運算,即對數據進行加工處理。 控制器(Control):是整個計算機的中樞神經,其功能是對程序規定的控制信息進行解釋,根據其要求進行控制,調度程序、數據、地址,協調計算…

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