linux文本處理三劍客—grep

 

cat:concatenate 文本文件查看工具
 cat [option] filename…
 -n:給顯示出來的文本行加上編號
 -b:非空行編號
 -V:顯示 ^
 -E:顯示行結束符$
 -T:顯示制表符
 -A:顯示所有控制符-A=-VET
 -s:壓縮連續的空行成一行
 如:cat /etc/fstab /etc/passwd 同時查看多個文件
 df | cut -d:

tac:文本文件查看工具
 用法同cat 只是文件內容的行逆序顯示

rec:文本文件查看工具
    用法同cat 只是文本文件每一行的內容倒過來顯示

head:查看文件的前幾行(默認10行)
  head [option] FILE
  head -n #:指定查看行數,可簡寫為:-#

tail:查看文件的后幾行(默認10行)
  tail [option] FILE
  tail -n #:指定查看行數,可簡寫為:-#
     -f:查看文件尾部內容結束后不退出
      跟隨顯示新增的行,監控日志文件增長時非常有用
  tail -f -n0 test.txt & 后臺運行日志文件監控

分屏查看命令:more,less
 more:more file
  特點:翻屏至文件尾部時自動退出

 less:less file
  man調用的就是less命令,用法同man一樣

cut:剪輯命令——篩選顯示文件內容
 cut [OPTION]… [FILE]…
  -d 指定分隔符(默認tab)
  -f 指定顯示字段
   #: 第#個字段
   m,n:第m段,第n段
   m-n:第m段到第n段
   混合使用:m-n,#
  -c 按字符切割
  –output-delimiter=STRING指定輸出分隔符
  如:cut -d:-f1,5,7 /etc/passwd

paste 合并兩個文件同行號的列到一行后顯示
 paste [OPTION]… [FILE1] [FILE2]…
 -d 分隔符:指定分隔符(默認用TAB)
 -s : 先將文件各自所有的行合成一行后再把兩個文件的內容合并顯示
  paste file1 file2 > file 產生真實合并效果
  paste  -s file1 file2

wc:world count文本統計命令
   wc [option] file
    -l:僅顯示文本文件的行數
    -w:僅顯示文件文件的字數
    -c:僅顯示文本文件的字節數
    -m:僅顯示文本文件的字符數
   
sort:文件內容排序顯示
 sort [option] file
   -n:以數值大小進行排序
   -u:排序后去重
   -f:忽略字符大小寫
   -r:逆序排列
   -t:指定分隔符
   -k:指定排序字段
 如:sort -nt: -k3 /etc/passwd

uniq:顯示文件中的重復行(完全相同切連續的行)
 uniq [option] file
    -d:只顯示重復的行
    -c:顯示文件中行重復的次數
    -u:僅顯示不重復的行
  常和sort 命令一起配合使用:
  sort  userlist.txt  |  uniq -c

diff:比較兩個文件之間的區別
 diff [option] file1 file2
 如:diff foo.conf-broken foo.conf-works
  5c5
  < use_widgets = no
  —
  > use_widgets = yes
  ? 注明第5行有區別(改變)

 diff 命令的輸出被保存在一種叫做“補丁”的文件中,使用 -u 選項來輸出“統一的(unified)”diff格式文件,最適用于補丁文件。
 patch 命令復制在其它文件中進行的改變(要謹慎使用?。?br /> ?    適用 -b 選項來自動備份改變了的文件
 diff -u foo.conf-broken foo.conf-works > foo.patch
 patch -b foo.conf-broken foo.patch

linux文本處理三劍客
  grep:文本過濾工具
?   sed:stream editor,流編輯器
?   awk:Linux上的實現gawk,文本報告生成器

grep: Global search REgular expression and Print out the line
   用途grep:根據模式搜索文本,并將符合模式的文本行顯示出來
   parttern(模式):文本字符和正則表達式的元字符組合而成的匹配條件
 grep, egrep, fgrep(不支持正則表達式搜索)

grep [OPTIONS] PATTERN [FILE…]
 ? –color=auto: 對匹配到的文本著色顯示;
 ? -v: 顯示不能夠被pattern匹配到的行;
 ? -i: 忽略字符大小寫
 ? -n:顯示匹配的行號
 ? -c: 統計匹配的行數
 ? -o: 僅顯示匹配到的字符串
 ? -q: 靜默模式,不輸出任何信息
 ? -A #:after, 顯示匹配行之后相連的#行
 ? -B #: before, 顯示匹配行之前相連的#行
 ? -C #:context, 顯示匹配行前后各#行
       -w:整行匹配整個單詞
 ? -E:使用擴展正則表達式 等同于egrep
 ? -e:多個選項間的邏輯或關系
  如:grep –e ‘cat ’  -e ‘dog’  file

REGEXP:由一類特殊字符及文本字符所編寫的模式,其中有些字符(元字符)不表示字符字面意義,而表示控制或通配的功能
  程序支持:grep, vim, less,nginx等
 分兩類:
  基本正則表達式:BRE
  擴展正則表達式:ERE
 正則表達式引擎:
  采用不同算法,檢查處理正則表達式的軟件模塊
  PCRE(Perl Compatible Regular Expressions)
 元字符分類:字符匹配、匹配次數、位置錨定、分組

 字符匹配:使用時元字符外面需再套一個[]
  .   : 匹配任意單個字符;
  []  : 匹配指定范圍內的任意單個字符
  [^] :匹配指定范圍外的任意單個字符
  [:digit:]所有數字
  [:upper:]所有大寫字母
  [:lower:]所有小寫字母
  [:alpha:]所有大小寫字母
  [:alnum:]數字和大小寫字母
  [:punct:]標點符號
  [:space:]空格

 匹配次數:用在要指定次數的字符后面,用于指定前面的字符要出現的次數
  *:匹配前面的字符任意次,包括0次
     貪婪模式:盡可能長的匹配
   \:轉義符
  .*:任意長度的任意字符
  \?:匹配其前面的字符0或1次
  \+:匹配其前面的字符至少1次
  \{m\}:匹配前面的字符m次
  \{m,n\}:匹配前面的字符至少m次,至多n次
  \{,n\}:匹配前面的字符至多n次 <=n
  \{m,\}:匹配前面的字符至少m次 >=n

 位置錨定:定位出現的位置
  ^:行首錨定,用于模式的最左側
  $:行尾錨定,用于模式的最右側
  ^PATTERN$: 用于模式匹配整行
  ^$: 空行
  ^[[:space:]]*$ :空白行
  \< 或 \b:詞首錨定,用于單詞模式的左側
  \> 或 \b:詞尾錨定;用于單詞模式的右側
  \<PATTERN\>:匹配整個單詞

 分組:\(\):將一個或多個字符捆綁在一起,當作一個整體進行處理,如:\(root\)\+
  分組括號中的模式匹配到的內容會被正則表達式引擎記錄于內部的變量中,這些變量的命名方式為: \1, \2, \3, …
  \1: 從左側起,第一個左括號以及與之匹配右括號之間的模式所匹配到的字符;

  后向引用:引用前面的分組括號中的模式所匹配字符(而非模式本身)
  找出帳戶列表中用戶名和SHELL名稱一樣的行

egrep及擴展正則表達式
 egrep = grep -E
 egrep [OPTIONS] PATTERN [FILE…]
 擴展正則表達式的元字符:
 字符匹配:
  . 任意單個字符
  [] 指定范圍的字符
  [^] 不在指定范圍的字符

 次數匹配:
  *:匹配前面字符任意次
  ?: 0或1次
  +:1次或多次
  {m}:匹配m次
  {m,n}:至少m,至多n次

 位置錨定:
  ^  :行首
  $  :行尾
  \<, \b :語首
  \>, \b :語尾
  ?分組:
  ()
 
 后向引用:\1, \2,
 或者:
  a|b
  C|cat: C或cat
  (C|c)at:Cat或cat

原創文章,作者:愛情防火墻,如若轉載,請注明出處:http://www.www58058.com/29274

(0)
愛情防火墻愛情防火墻
上一篇 2016-08-05 16:13
下一篇 2016-08-05 16:13

相關推薦

  • 優云Web新功能發布,邀您在線免費體驗!

    你是否還在因為無法通過大數據精準分析需求而煩惱? 你是否還在因為無法直觀呈現用戶的行為而頭大? 你是否還在因為怎么優化頁面布局而愁眉苦臉? 正所謂“一圖勝千言”,一張色彩繽紛的圖片甚至可以給人帶來意想不到的收獲,優云web作為監控利器,其新功能“熱圖”可以為您解決這些麻煩! 熱圖作為優云web的特色功能點,究竟是怎樣幫助您更好地了解用戶行為的呢,讓小編給您一…

    系統運維 2017-01-09
  • 系統基礎之用戶,組及權限管理

    用戶及組詳解 概論:   現今,大多數操作系統都是多用戶(Multi-tasks)多任務(Mulit-Users)的系統.在多年前,計算機資源遠沒有現在這么豐富,都是多人使用同一臺計算機,為了保障使用計算機的用戶權益不受到損害,完成資源使用隔離,人們采取了用戶機制標識使用者的方法.  每個使用者都是用戶,用戶是由UID進行標識,通過密碼進…

    Linux干貨 2016-08-04
  • 企業實時同步方案—-Rsync+Sersync

    原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。否則將追究法律責任。http://nolinux.blog.51cto.com/4824967/1433623     在博文企業實時同步方案—-Sersync介紹中我們詳細介紹了Sersync的原理,設計架構以及…

    Linux干貨 2015-03-30
  • 初識MySQL(一)

        數據庫(DATABASES)      數據庫是一個單位或是一個應用領域的通用數據處理系統,存儲有企業和事業部門、團體和個人的有關數據的集合,該集合中數據是從全局觀點出發建立的,按一定的數據模型進行組織、描述和存儲。其結構基于數據間的自然聯系,從而可提供一切必要的存取路徑,且數據不…

    Linux干貨 2015-08-24
  • bind的安裝實現

    首先介紹一下我的測試環境:centos 7+入網(為了試行一下自己的安裝文檔,才裝的虛擬機) 1> yum install bind bind-chroot -y     因為剛剛安裝的虛擬機,這里我就不檢查了; 2>vim named.conf [root@localhost named]# cat /e…

    Linux干貨 2016-03-20
  • tomcat優化

    安裝過程就不多說了,本次主要說明我在實際工作中的一些優化。    1,修改tomcat的運行模式,常見的有 bio,nio, apr三種    我選擇的apr模式,這種對tomcat的性能有較大提高. a:可以根據壓力測試工具來進行測試觀察。(其實我沒對修改apr模式后壓測,我直接問百度的) b:重新啟動tomcat后…

    Linux干貨 2016-06-28
欧美性久久久久