正規表示式

2022-07-22 07:12:11 字數 2154 閱讀 8661

---恢復內容開始---

正則就是用一些具有特殊含義的符號組合到一起(稱為正規表示式)來描述字元或者字串的方法。或者說:正則就是用來描述一類事物的規則。

grep:文字搜尋

-n  :顯示行號

-o  :只顯示匹配的內容

-q  :靜默模式,沒有任何輸出,得用$?來判斷執行成功沒有,即有沒有過濾到想要的內容

-l  :如果匹配成功,則只將檔名列印出來,失敗則不列印,通常-rl一起用,grep -rl 'root' /etc 

-a  :如果匹配成功,則將匹配行及其後n行一起列印出來

-b  :如果匹配成功,則將匹配行及其前n行一起列印出來

-c  :如果匹配成功,則將匹配行及其前後n行一起列印出來

--color

-c  :如果匹配成功,則將匹配到的行數列印出來

-e  :等於egrep,擴充套件

-i  :忽略大小寫

-v  :取反,不匹配

-w:匹配單詞

介紹:^:以什麼什麼開頭

$:以是什麼什麼結尾

*:左邊字元零個或多個

.*:所有字元

.:代表乙個字元

:左邊字元有n個

$:左邊字元n個結尾

:字元組內的任一字元

[a-z]:a到z中任一單字元

[a-za-z]:a到z和a到z中任一單字元

[a-z]:就是[a-za-z]

擴充套件正則

grep 加 -e 或 egrep 或轉義

?:左邊字元為零個或1個

+: 前導字元乙個或多個

abc|def abc或def

a(bc|de)f abcf 或 adef

x\ x出現m次

x\ x出現m次至多次(至少m次)

x\ x出現m次至n次

作業

grep作業(正規表示式及字元處理)

目標檔案/etc/passwd,使用grep命令或egrep

1.顯示出所有含有root的行:

#grep 'root' /etc/passwd                          

2.輸出任何包含bash的所有行,還要輸出緊接著這行的上下各兩行的內容:

#

grep -c 2 'bash' /etc/passwd                    

3.  顯示出有多少行含有nologin。

#grep -c 'nologin' /etc/passwd                  

4.顯示出那些行含有root,並將行號一塊輸出。

#

grep -n 'root' /etc/passwd                    

5.新建使用者

abominable

abominate

anomie

atomize

編寫正規表示式,將他們匹配出來

#

egrep 'a.omi(nabl|nat|z|)e' /etc/passwd        

6.建四個使用者

alex213sb

wpq2222b

yh438pig

egon666

egon

過濾出使用者名稱組成是字母+數字+字母的行

#

egrep '^[a-z]+[0-9]+[a-z]+' /etc/passwd      

7.顯示出/etc目錄下所有包含root的檔名

#

find /etc | egrep 'root'                    

9. 過濾掉/etc/ssh/sshd_config內所有注釋和所有空行

#

grep -v '^#' /etc/ssh/sshd_config |grep -v '^ *$'

---恢復內容結束---

正規表示式 正規表示式 總結

非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...

正規表示式 表示式

網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...

Linux正規表示式 編寫正規表示式

為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...