linux学习笔记(十二)
正則表達(dá)式基礎(chǔ)
1.正則表達(dá)式 regular expression
一個(gè)正則表達(dá)式通常被稱為一個(gè)模式(pattern),為來描述或者匹配一系列符合某個(gè)句法規(guī)則的字符串。
2.基本語法
選擇:
| “boy|girl”可以匹配boy或girl
數(shù)量限定:
- 表示前面的字符必須出現(xiàn)至少一次(1次或多次),如“goo+gle”可以匹配“gooole”,“goooole”
? 表示前面的字符最多出現(xiàn)一次(0次或1次),如“colou?r”可以匹配“color”、“colour” - 表示前面的字符可以不出現(xiàn)、或者出現(xiàn)一次或者出現(xiàn)多次(0次、或1次、或多次),如“0*42”可以匹配42、042、0042、00042等
范圍和優(yōu)先級:
( ) 用來定義定義模式字符串的范圍和優(yōu)先級。
如gr(a|e)y 等級與gray|grey
(grand)?father 匹配father和grandfather
部分語法:
? 將系一個(gè)字符標(biāo)記為一個(gè)特殊字符或一個(gè)原義字符。如“n”匹配“n”,“\n”匹配換行符,“\”匹配,(匹配(
^ 匹配輸入字符串的開始位置
$ 匹配輸入字符串的結(jié)束位置
{n} n是一個(gè)非負(fù)整數(shù),匹配確定的n次
{n,} n是一個(gè)非負(fù)整數(shù),至少匹配n次。{1,}等價(jià)于+,{0,}等價(jià)于*
{n,m} n,m均為非負(fù)整數(shù),n<m,最少匹配n次,最多匹配m次
- 匹配前面的子表達(dá)式零次或多次
- 匹配前面的子表達(dá)式一次或多次
? 匹配前面的子表達(dá)式零次或一次
? 當(dāng)?緊跟在任何一個(gè)其他限制符(*,+,?,{n},{n,},{n,m})后面,匹配模式是非貪婪的,非貪婪模式盡可能少的匹配所搜索的字符串,而默認(rèn)的貪婪模式盡可能多的匹配所搜索的字符串。如“00000”,“0+?”匹配“0”,“0+”匹配所有0
(patter)匹配pattern并獲取之一匹配的子字符串
x|y 匹配x或y
[xyz] 字符集合,匹配所包含的任意一個(gè)字符。其中特殊字符僅有反斜線\保持特殊含義,用于轉(zhuǎn)義字符。其它特殊字符如星號、加號、各種括號等均作為普通字符。脫字符^如果出現(xiàn)在首位則表示負(fù)值字符集合;如果出現(xiàn)在字符串中間就僅作為普通字符。連字符 - 如果出現(xiàn)在字符串中間表示字符范圍描述;如果如果出現(xiàn)在首位則僅作為普通字符
[^xyz] 排除型字符集合。匹配未列出的任意字符。
[a-z] 字符范圍,匹配制定范圍內(nèi)的任意字符
[^a-z] 排除型字符范圍。匹配任何不在制定范圍內(nèi)的任意字符
3.優(yōu)先級
轉(zhuǎn)義符、括號中括號、限定符、定位點(diǎn)和序列(^,$,\任何元字符)、選擇
4.grep模式匹配命令
grep命令用于打印輸出文本中匹配的模式串,使用正則表達(dá)式作為匹配條件。
grep 參數(shù) 模式 file
-b 將二進(jìn)制文件作為文本來進(jìn)行匹配
-c 統(tǒng)計(jì)與模式匹配的數(shù)目
-i 忽略大小寫
-n 顯示匹配文本所在行的行號
-v 反選,輸出不匹配行的內(nèi)容
-r 遞歸匹配查找
-A n after,除列出匹配行外,還列出后面的n行
-B n before,除列出匹配行外,還列出前面的n行
--color=auto 將輸出的匹配項(xiàng)設(shè)置為自動(dòng)顏色顯示
grep支持三種正則表達(dá)式引擎
-E ERE,擴(kuò)展正則表達(dá)式
-G BRE,基本正則表達(dá)式
-P PCRE ,perl正則表達(dá)式
5.使用正則表達(dá)式:
基本正則表達(dá)式BRE
...位置:查找/etc/group文件中以“shiyanlou”開頭的行
grep ‘shiyanlou’/etc/group
grep '^shiyanlou' /etc/group
...數(shù)量:
...選擇:
完整的特殊符號及說明:
6.使用擴(kuò)展正則表達(dá)式ERE
grep -E 或者用egrep
...數(shù)量:
...選擇:
其中.有特殊含義,需要轉(zhuǎn)義
7.sed流編輯器
sed工具用于過濾和轉(zhuǎn)換文本的流編輯器
sed 參數(shù) 執(zhí)行命令 file
-n 安靜模式,只打印受影響的行,默認(rèn)打印輸入數(shù)據(jù)的全部內(nèi)容。
-e 用于腳本中添加多個(gè)執(zhí)行命令一次執(zhí)行,在命令行中執(zhí)行多個(gè)命令通常不需要加蓋參數(shù)
-f filename 執(zhí)行指定filename文件中的命令
-r 使用擴(kuò)展正則表達(dá)式,默認(rèn)為標(biāo)準(zhǔn)正則表達(dá)式
-i 將直接修改輸入文件內(nèi)容,而不是打印到標(biāo)準(zhǔn)輸出設(shè)備
sed編輯器的執(zhí)行命令--略
8.awk文本處理工具--略
轉(zhuǎn)載于:https://www.cnblogs.com/xflyer/p/10422174.html
總結(jié)
以上是生活随笔為你收集整理的linux学习笔记(十二)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python控制蓝牙pybluez_Py
- 下一篇: 服务器如何防止被攻击