[a-z]:小寫字母
[A-Z]:大寫字母
[a-Z]:小或大寫字母
[0-9]:數字
#[a-zA-Z0-9]:表示符合一個為字母或數字的字元
. :符合1個任意字符,空格除外
[0-f]:16進位數
abc | def:abc或def
a (bc | de) f:abcf 或adef
\<:單字頭單字一般以空格或特殊字元做分隔,連續的字串被當做單字
\>:單字尾
[^表達式]:除小寫字母以外的所有字符,如此類推。
此類符號的左邊要有上面第一點的表達式
#表達式*:0或n個字元
表達式+:1或n個字元
表達式?: 0或1個字元
表達式{n}:n個字元
表達式{n:m}:n到m個字元
表達式{n,}:至少n個字元
【範例】[a-z]*表示符合0個或多個小寫字母
#^表達式:頭部符合
#表達式$:尾部符合
grep的擴充版,可以使用正規表示式
egrep -選項 '正規表示式' 檔名
-n :顯示行號
-o :只顯示符合的內容
-q :靜默模式,沒有任何輸出,得用$?來判斷執行成功沒有,即有沒有過濾到想要的內容
- l :如果匹配成功,則只將文件名打印出來,失敗則不打印,通常-rl一起用,grep -rl 'root' /etc
-A :如果匹配成功,則將匹配行及其後n行一起打印出來
-B :如果匹配成功,則將匹配行及其前n行一起打印出來
#-C :如果符合成功,則將符合行及其前後n行一起列印出來
--color
-c :如果匹配成功,則將匹配到的行數列印出來
-i :忽略大小寫
#①數字定位(輸入行序號定位)
②正規表示式定位
*貪婪選項:填上g,代表把一行中所有符合項目替換
指令:
使用{指令1:指令2:指令3}可增加使用多個指令
s指令語法:sed -r '取代指令s/正規表示式/取代內容/貪婪選項g' 檔名
3、awk 文字分析工具
#使用option中的-F參數定義間隔符號
以$1,$2,$3等的順序表示files中每行以間隔符號分隔的各列不同域,NF變數表示目前記錄的欄位數
awk -選項參數 '邏輯判斷{指令變數1,變數2,變數3}' 檔案名稱
-F 定義欄位分隔符,預設的分隔符號是連續的空格或製表符
-v 定義變數並賦值也可以藉用次方式從shell變數中引入
AWK變數
NR 目前記錄的數量(全部檔案連線後的統計)
# awk -F: 'OFS="=====" {print $1,$2}' /etc/passwd
root===== x
# awk -F: 'ORS="=====" {print $1,$2}' /etc/ passwd
root x=====bin x=====
# awk '{print NR,FNR,$1}' file1 file2
#1 1 aaaaa
2 2 bbbbb
3 3 ccccc
4 1 dddddd
5 2 eeeeee
6 3 ffffff
#
引用shell變數的方法# # a=root
# awk -v var=$a -F: '$1 == var {print $0}' /etc/passwd或將整個指令拆開傳遞,讓shell變數外露,
# awk -F: '$1 == "'$a'" {print $0}' /etc/passwd
# a=NF
# awk -F: '{print $'$a'}' /etc/passwd
有錯誤請指正,更多詳細資料參考:
以上是正規表示式的詳細內容。更多資訊請關注PHP中文網其他相關文章!