首頁 web前端 js教程 Linux中正規表示式使用詳解

Linux中正規表示式使用詳解

May 25, 2018 am 10:14 AM
linux 表達式 詳解

這次帶給大家Linux中正規表示式使用詳解,Linux中正規表示式使用的注意事項有哪些,下面就是實戰案例,一起來看一下。

1、組成

普通字元:普通字串,沒有特殊意義
特殊字元:在正規表示式中具有特殊的意義
正規表示式中常見的meta字元【特殊字元】

2、POSIX BRE【基本】與ERE【擴充】中都有的meta字元

#\ :通常用於開啟或關閉後續字符的特殊意義,如(...)【\是轉義字符,去掉符號的特殊意義,()、{}等在shell中都有特殊的意義】
.和以及.的區別:

##[root@localhost ~]# cat -n test.txt

     1  gd
     2  god# # 4  good
     5  goood
     6  goad
     7
#     8 且為空白

##2.1、#n##2.1、#n,即為單一

[root@localhost ~]# grep -n "." test.txt      
1:gd

2:god

4:good
5:goood

6 :goad
8:gboad
[root@localhost ~]# grep -n "go.d" test.txt
4:good
6:goad


# 2.2、 :匹配其前字元任意次,如o,可以是沒有o或一個o,也可以是多個o

[root@localhost ~]# grep -n "*" test .txt
[root@localhost ~]# grep -n "o*" test.txt

1:gd

2:god
3:

4:good
5: goood
6:goad
7:
8:gboad
[root@localhost ~]# echo "gbad" >>test.txt
[root@localhost ~]# echo "pbad" >>test.txt
[root@localhost ~]# echo "kgbad" >>test.txt
[root@localhost ~]# echo "poad" >>test .txt  
[root@localhost ~]# grep -n "go*" test.txt 【o可以沒有,o前面的g一定要匹配】
1:gd
2:god
4:good
5:goood
6:goad
8:gboad
9:gbad
11:kgbad


*2.3、. :匹配任意字符(符合所有),可以為空**

[root@localhost ~]# grep -n ".*" test.txt
1:gd

2:god

3:
4:good

5:goood
6:goad
7:
8:gboad
9:gbad
10:pbad
11:kgbad
12:poad
[root@localhost ~]# grep -n "go.*" test.txt
2:god
4:good
5:goood
6: goad
[root@localhost ~]# grep -n "po.*" test.txt 
12:poad
[root@localhost ~]# echo "pgoad" >>test.txt   
[root@localhost ~]# grep -n "go.*" test.txt  【匹配go後存在任意字符,可為空】
2:god
4:good
5:goood
6:goad
13:pgoad
[root@localhost ~]
#[root@localhost ~]# grep -n "o.*" test.txt 
2:god
4:good
5:goood
6:goad
8:gboad
12:poad


2.4、^ :符合緊接著後面的正規表示式,以...為開頭

[root@localhost tmp]# grep "^root" /etc/passwd
root:x:0:0:root:/root:/bin /bash

[root@localhost tmp]

#2.5、$ :匹配緊接著前面的正規表示式,以...結尾

##[root @localhost tmp]# grep "bash$" /etc/passwd | head -1

root:x:0:0:root:/root:/bin/bash
[root@localhost tmp]

#^$:表示是空白行的意思

「#|^$」:符合以#號開頭的註解行和空白行


2.6、[] :符合方括號裡的任一字元

(如[sS],匹配s或匹配S),其中可用連字符(-)指定連字符的範圍(如[(0-9)],匹配0-9任一字元);[^0-9]如果^符號出現在方括號的第一個位置,則表示符合不在清單中的任一字元。

[root@localhost tmp]# cat hosts
192.168.200.1
192.168.200.3
a.b.123.5
23.c.56.1
1456.1.24# .5.6.8
[root@localhost tmp]# grep -E '([0-9]{1,3}\.){3}[0-9]{1,3}' hosts  
192.168.200.1
192.168.200.3
1456.1.2.4
12.4.5.6.8
[root@localhost tmp]# grep -E '^([0-9]{1,##[root@localhost tmp]# grep -E '^([0-9]{1,3}\ .){3}[0-9]{1,3}$' hosts
192.168.200.1
192.168.200.3
[root@localhost tmp]

#2.7 、? :符合前面字元的零次或多次

[root@localhost ~]# grep -E "go?d" test.txt  

gd
god
[root@localhost ~]
#[root@localhost tmp]# cat test
do
does
doxy
[root@localhost tmp]# grep -E "do(es)? " test
do
does
doxy
[root@localhost tmp]

#3、POSIX BRE(基本正規)中才有的字元

{n,m} :區間表達式,符合在它前面的單一字元重現【重複,緊接著的單一字元如https{0,1},即重複s 0-1次。 {n}指配對n次;{n,m}指配對n至m次,{n,}指配對至少n次,{,m}符合至多m次。 【\轉義字元】

4、POSIX ERE(擴充正規)中才有的字元

4.1、{n,m} :與BRE的{n ,m}功能相同

[root@localhost tmp]# grep -E '^([0-9]{1,3}\.){3}[0-9]{1 ,3}$' hosts

192.168.200.1
192.168.200.3

4.2、 :符合前面正規表示式的一次或多次

# #[root@localhost ~]# egrep "go d" test.txt

god
good
goood
[root@localhost ~]

#4.3、| :表示符合多個字串【或的關係】

[root@localhost ~]# grep -E "3306|1521" /etc/services

mysql              # MySQL
mysql           3306/udp                              # nCube License Manager
ncube-lm        1521/udp            
4.4、( ) :分組過濾,
後向引用

分組過濾   

[root@localhost ~]# echo "glad" > > test.txt

[root@localhost ~]# egrep "(la|oo)" test.txt

good

goood
glad


##()後向引用;當前面匹配部分用小括號的時候,第一個括號的內容可以在後面部分用\1輸出;以此類推。


 [root@localhost tmp]# ifconfig |sed -rn 's#.*addr:(.*)(B.*)$#\1#gp'

192.168.4.27

5、正規表示式的

元字元

5.1、\b :符合一個單字邊界[root@localhost tmp]# cat test        do

does

doxy

agdoeg
[root@localhost tmp]# grep "do\b" test


[root@localhost tmp]# grep "do\b" test
do
[root@localhost tmp]# grep "\bdo" test       
do
does
doxy
[root@localhost tmp]# grep"\bdoes ##[root@localhost tmp]# grep "\bdo\b" test 
do
#[root@localhost tmp]


#5.2、\B :符合非單字邊界,與\b相反


[root@localhost tmp]# grep "do\B" test   

does
doxy

agdoeg

[root@localhost tmp] # grep "do\b" test
do

[root@localhost tmp]
#

5.3、\d :匹配一個數字字符,等價於[0-9]

5.4、\D :匹配一個非數字字符,等價於[^0-9]

5.5、\w :匹配字母、數字、底線,等價於[A-Za-z0-9_]

還有很多元字符,這裡就不一一羅列出來

案例:開機精簡

[root@localhost ~]# chkconfig --list| egrep -v "crond|network|rsyslog|sshd|sysstat" | awk '{print " chkconfig",$1,"off"}'|bash

相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

推薦閱讀:

JS字串方法使用步驟詳解

#JS陣列方法使用步驟詳解

以上是Linux中正規表示式使用詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24
Linux體系結構:揭示5個基本組件 Linux體系結構:揭示5個基本組件 Apr 20, 2025 am 12:04 AM

Linux系統的五個基本組件是:1.內核,2.系統庫,3.系統實用程序,4.圖形用戶界面,5.應用程序。內核管理硬件資源,系統庫提供預編譯函數,系統實用程序用於系統管理,GUI提供可視化交互,應用程序利用這些組件實現功能。

git怎麼查看倉庫地址 git怎麼查看倉庫地址 Apr 17, 2025 pm 01:54 PM

要查看 Git 倉庫地址,請執行以下步驟:1. 打開命令行並導航到倉庫目錄;2. 運行 "git remote -v" 命令;3. 查看輸出中的倉庫名稱及其相應的地址。

vscode上一步下一步快捷鍵 vscode上一步下一步快捷鍵 Apr 15, 2025 pm 10:51 PM

VS Code 一步/下一步快捷鍵的使用方法:一步(向後):Windows/Linux:Ctrl ←;macOS:Cmd ←下一步(向前):Windows/Linux:Ctrl →;macOS:Cmd →

notepad怎麼運行java代碼 notepad怎麼運行java代碼 Apr 16, 2025 pm 07:39 PM

雖然 Notepad 無法直接運行 Java 代碼,但可以通過借助其他工具實現:使用命令行編譯器 (javac) 編譯代碼,生成字節碼文件 (filename.class)。使用 Java 解釋器 (java) 解釋字節碼,執行代碼並輸出結果。

sublime寫好代碼後如何運行 sublime寫好代碼後如何運行 Apr 16, 2025 am 08:51 AM

在 Sublime 中運行代碼的方法有六種:通過熱鍵、菜單、構建系統、命令行、設置默認構建系統和自定義構建命令,並可通過右鍵單擊項目/文件運行單個文件/項目,構建系統可用性取決於 Sublime Text 的安裝情況。

laravel安裝代碼 laravel安裝代碼 Apr 18, 2025 pm 12:30 PM

要安裝 Laravel,需依序進行以下步驟:安裝 Composer(適用於 macOS/Linux 和 Windows)安裝 Laravel 安裝器創建新項目啟動服務訪問應用程序(網址:http://127.0.0.1:8000)設置數據庫連接(如果需要)

Linux的主要目的是什麼? Linux的主要目的是什麼? Apr 16, 2025 am 12:19 AM

Linux的主要用途包括:1.服務器操作系統,2.嵌入式系統,3.桌面操作系統,4.開發和測試環境。 Linux在這些領域表現出色,提供了穩定性、安全性和高效的開發工具。

git軟件安裝 git軟件安裝 Apr 17, 2025 am 11:57 AM

安裝 Git 軟件包括以下步驟:下載安裝包運行安裝包驗證安裝配置 Git安裝 Git Bash(僅限 Windows)

See all articles