正規表示式筆記

2021-06-22 03:35:42 字數 3792 閱讀 4537

不同的語系編碼的順序不一樣

lang=c : 0 1 2 3 ... a b c d ... z a b c d ... z

lang=zh_cn: 0 1 2 3 4 ... a a b b c c ... z z

使用正規表示式時,需要留意環境的語系是什麼,否則會有不同的結果

*[:alnum:] 英文大小寫字元及數字 0-9 a-z a-z

*[:alpha:]  英文大小寫 a-z a-z

[:blank:]

[:cntrl:]

*[:digit:]  數字 0-9

[:graph:]

[:graph:]

*[:lower:] 小寫字母 a-z

[:print:]

[:punct:]

*[:upper:]

大寫字母 a-z

[:space:]

[:xdigit:]

grep的一些引數

grep [-a] [-b] [--color=auto] '搜尋字元' filename

-a 後加數字,為after意思

-b 後加數字,為before意思

用dmesg列出核心資訊,在以grep找出含eth的那行

dmesg | grep 'eth'

承上,找到關鍵字顯色,且加上行號

dmesg | grep -n --color=auto 'eth'

承上,在關鍵字所在行的前兩行和後三行也一起找出來顯示

dmesg | grep -n -a2 -b3 --color=auto 'eth'

grep主要功能是進行字串資料的對比,然後將符號使用者需求的字串列印出來,在資料中查詢一條字串時,是以整行為單位來進行資料選取的

1.查詢特定字串

查詢特定字串 the

grep -n 'the' test.txt

反向選擇,除了the的才顯示

grep -vn 'the' test.txt

大小寫都顯示

grep -in 'the' test.txt

2.利用中括號來查詢集合字元

查詢test或taste兩個單詞

grep -n 't[ae]st' test.txt

查詢有oo的字元

grep -n 'oo' test.txt

不想oo前面有g

grep -n '[^g]oo' test.txt

不想oo前面有小寫字元

grep -n '[^a-z]oo' test.txt

取得有數字的那一行

grep -n '[0-9]' test.txt

其他表示法

grep -n '[^[:lower:]]oo' test.txt

grep -n '[[:digit:]]' test.txt

3.行首和行尾字元 ^ $

the只在行首出現

grep -n '^the' test.txt

開頭是小寫字母

grep -n '^[a-z]' test.txt

grep -n '^[[:lower:]]' test.txt

開頭不是英文本母

grep -n '^[^a-za-z]' test.txt

行尾結束為小數點 .

grep -n '\.$' test.txt

小數點會有其他意義,用轉義字元加以解除

找出空白行

grep -n '^$' test.txt

開頭就是結尾

linux中找注釋的語句

grep -n '^[#]' test.txt

grep -vn '^[^#]' test.txt

4.任意乙個字元.和重複字元*

.(小數點) :代表一定有乙個任意字元的意思

*(星號) : 代表重複前乙個0到無窮多次的意思,為組合狀態

開頭是g 結束是d,中間兩個字元

grep -n 'g..d' test.txt

.* 代表零個或多個任意字元

grep -n 'g.*d' test.txt

5.限定連續re字元範圍

找到兩個o的字串

grep -n 'o\' test.txt

需要轉義

g後面接2到5個o,在接乙個g

grep -n 'go\g' test.txt

兩個以上的o

grep -n 'go\g' test.txt

找出檔案型別是連線檔案屬性的檔名

ls -l /etc | grep '^l'

sed工具

引數:-n 安靜模式,只有經過sed特殊處理的那一行才會顯示出來

a 新增 後接字串,在新的一行出現(後一行)

c 替換 後接字串,替換n1,n2之間的行

d 刪除 

i  插入 後接字串,在新的一行出現(前一行)

p 列印

s  替換

將檔案內容顯示出來並且列印行號,同時將2~5行刪除

nl /etc/passwd | sed '2,5d'

刪除2~最後一行

nl /etc/passwd | sed '2,$d'

在第二行後加上字元

nl /etc/passwd | sed '2a drink tea'

在第二行前面加上字元 以反斜槓\可以增加新的行

nl /etc/passwd | sed '2i drink tea or .....\

how are you'

多行替換

nl /etc/passwd | sed '2,6c no 2-6 hello world'

只列出指定的幾行

nl /etc/passwd | sed -n '3,9p'

查詢並替換

sed 's/要被替換的字元/新的字元/g'

例子1:

ifconfig eth0 | grep 'inet addr' :

inet addr:192.168.101.2  bcast:192.168.101.255  mask:255.255.255.0

ifconfig eth0 | grep 'inet addr' | sed 's/.*addr://g' :

192.168.101.2  bcast:192.168.101.255  mask:255.255.255.0

ifconfig eth0 | grep 'inet addr' | sed 's/.*addr://g' | sed 's/bcast.*$//g' :

192.168.101.2

例子2:

將man所在行列出

cat /etc/man.config | grep 'man'

刪掉批註之後的資料

cat /etc/man.config | grep 'man' | sed 's/#.*$//g'

刪掉空白行

cat /etc/man.config | grep 'man' | sed 's/#.*$//g' | sed '/^$/d'

直接修改檔案內容

將每一行結尾的 . 換為 !

sed -i 's/\.$/\!/g' test.txt

引數-i為直接修改後面的檔案而不在螢幕輸出

在最後一行加入文字 '# hello world'

sed -i '$a # hello world' test.txt

擴充套件正規表示式

egrep

+重複乙個或乙個以上的前乙個re字元

?零個或乙個的前乙個re字元

|用或(or)的方式找出數個字串

()找出組字串

()+多個重複組的判別

正規表示式 正規表示式函式 筆記

筆記直接使用pycharm製作,需要原始檔請私聊。正規表示式函式 1.match 2.search 3.全域性匹配函式 全域性匹配 re.compile 正規表示式 findall 資料 import re string poythonydasadcasa pat2 p.y 懶惰模式執行 較精準 r...

正規表示式筆記

d 0 9中的任意乙個數字 w a z,a z,0 9,中的任意乙個,即字母數字下劃線 s 空格,製表符,換頁符等空白字元的其中任意乙個 小數點可以匹配換行符 n 以外的任意乙個字元 匹配某範圍內的任意乙個字元 ab9 匹配 a b 9 中的任意乙個 abc 匹配abc之外的任意乙個字元 a g 匹...

正規表示式筆記

正規表示式用於匹配字串的規則的,知識點不難,但是比較繁瑣,這篇文章把正則的基本常用點系統的整理了一下,方便自己以後要用的時候查閱,也希望給大家提供參考。廢話不多說,直接奔主題 元字元說明 除了換行符以外的任意字元 指定 前邊的內容可以連續重複使用任意次數 匹配重複1次或更多次 匹配字串的開始 匹配字...