Shell中的Regex

來源:互聯網
上載者:User

標籤:

Shell中的Regex

VBird說學習Linux,掌握了Shell和正則就相當於打通了任督二脈,此後能力的成長才會突飛猛進。

Shell的基礎學習之前已經總結了一篇部落格:http://www.cnblogs.com/jyzhao/p/4485553.html

本文將總結Shell中的Regex及常用的字元處理命令,為打通任督二脈奠定基礎^_^。

  1. 基礎Regex舉例說明
  2. 字元截取命令

    • cut命令
    • awk命令
    • sed命令
  3. 字元處理命令

    • sort命令
    • wc命令
1. 基礎Regex舉例說明

*,.,\,^word,word$,[list],[^list],[n1-n2],\{n\},\{n,m\}

例1:簡易判斷日期格式

比如:2015-05-11,只是簡單判斷數位格式。

^[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}$

例2:簡易判斷IP地址格式

比如:192.168.1.100,只是簡單判斷數位格式。

[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}

例3:找出1.txt文字檔中以字母開頭的以及不是以字母開頭的行。

以字母開頭的行:

grep --color=auto "^[a-z,A-Z]" 1.txt

不是以字母開頭的行:

grep --color=auto "^[^a-z,A-Z]" 1.txt

2. 字元截取命令cut命令

用途:對於分隔字元規範的文本進行特定截取某些列,特點是簡單易用。

例4:cut截取出使用者名稱以及對應的uid,gid,過濾掉包含‘/sbin‘的行。

grep -v "/sbin" /etc/passwd | cut -f 1,3,4 -d ":"

截取結果樣本:

root:0:0oracle:500:500grid:501:500
awk命令

用途:對於分隔字元不規範的文本進行截取,特點是功能強大,文法比cut命令複雜。

awk ‘條件類型1{動作1}條件類型2{動作2} ...‘ filename
  1. awk的內建變數:

    NF 每一行($0)擁有的欄位總數NR 目前awk所處理的是“第幾行”資料FS 目前的分隔字元,預設是空格鍵
  2. awk的邏輯運算子:

    >, <, >=, <=, ==, !=

例5:查詢pmon進程的PID。

ps -ef | grep pmon | grep -v grep | awk ‘{print $2}‘

例6:列印出/etc/passwd中uid<3的使用者和他們的uid。

cat /etc/passwd | awk ‘BEGIN{FS=":"} $3 < 3 {print $1 "\t" $3}‘

註:注意BEGIN在這裡的用途,沒有BEGIN第一行顯示會不正確。

例7:截取出系統根目錄的磁碟空間使用率

df -h | awk ‘{print $5}‘|cut -f 1 -d "%"

sed命令

sed可以將資料進行替換、刪除、新增、選取特定行。

-n 只有經過sed處理的才顯示(預設顯示全部)-e 直接在命令列模式上進行sed的動作編輯-f 將sed的動作寫入一個檔案,然後-f filename執行filename中的sed命令-r 支援擴充型Regex文法(預設是基礎Regex文法)-i 直接修改讀取的檔案內容,而不是預設的螢幕輸出結果

例8:顯示行號並列印出/etc/hosts,刪除檔案的前兩行。

nl /etc/hosts | sed ‘1,2d‘

例9:把/etc/hosts檔案中的JY-DB全部替換為Alfred-DB顯示出來

sed -e ‘s/JY-DB/Alfred-DB/g‘ /etc/hosts

註:此處不寫-e參數也可以,如果兩個及以上sed命令需要每個前面都寫-e參數。

例10:直接修改/etc/hosts檔案,在檔案的第2行下插入新的一行“192.168.1.100 JY-DB”

sed -i ‘2a 192.168.1.100 JY-DB‘ /etc/hosts

3. 字元處理命令sort命令

用途:對結果進行排序顯示。

du -sk * | sort -rn
sort -t ":" -k "3,3" /etc/passwd
sort -n -t ":" -k "3,3" /etc/passwd

wc命令

用途:統計結果行,單詞,字元的數量。

統計行wc -l

例11:統計oracle的使用者進程數

ps -ef | grep LOCAL=NO | grep -v grep | wc -l

統計單詞wc -w

例12:統計/etc/issue檔案的單詞數

wc -w /etc/issue

統計字元wc -m

例13:統計/etc/issue檔案的字元數

wc -m /etc/issue

Shell中的Regex

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.