国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Linux > 正文

linux正則表達式

2024-06-28 13:24:03
字體:
來源:轉載
供稿:網友
linux正則表達式1 1.什么是正則表達式:

簡單說,正則表達式是一套處理大量的字符串而定義的規則和方法

例如:假設@代表12345

通過正則表達式這些特殊符號,可以快速的過濾,替換需要的內容。

linux正則一般以行為單位來處理

2 2.為什么要學習正則表達式:

在linux運維工作中,時刻面對著大量的日志,程序,命令的輸出。迫切的需要過濾我們需要的一部分內容,甚至是一個字符串。

3 3.兩個注意事項

1)正則表達式的應用非常廣泛,存在于各種語言中,如Perl,php,java等。

此文檔是linux中的正則表達式的相關應用及說明;

常見的正則表達式三劍客命令為:grep(egrep),sed,awk;要想三劍客更靈活,那就一定離不開正則表達式

2)linux正則表達式和我們命令行中其他的命令使用的通配符是有本質區別的。

eg: ll *.sh ;其中的*屬于通配符

4 4.使用正則表達式前注意如下事項

1)linux正則一般以行為單位來處理

2)設置別名,可讓過濾的字符顯示顏色; alias grep='grep --color=auto';可將別名設置放在/etc/PRofile文件中,并通過source /etc/profile使用配置生效。

3)注意字符集:LC_ALL=C

5 5.linux正則表達式(詳解)

linux基于grep命令的正則表達式(注:過濾的是基于字符形式,非行結果)

5.1 基礎正則表達式:BRE(basic regular expression)

^Word ;表達搜索以word開頭的內

eg:

#grep "^I" filename ;過濾以I開頭的行

word$ ;表達搜索以word結尾的內容

eg:

#grep "m$" filename ;過濾以m結尾的行

^$ ;表示空行

     eg:

#grep -v "^$" filename ;過濾非空行內容“-v”參數

. ;代表且只能代表任意一個字符

注釋:此中的”.”表達過濾出任意字符,但因為沒字符,所以沒出來。

eg:

# cat test1

wangb

        wan.bai

bai

gui

# grep "wan.b" test1 ;表示過濾wan并以任意一個字符b顯示

注意"."是匹配一個字符

/;轉義字符,讓有著特殊身份意義的字符,脫掉馬甲,還原原型。

eg:

/^word;表達^word字符,在此并不表示以word開頭含義

*;重復0個或多個前面的一個字符,不代表所有了。

eg:

# grep "0*" test1

wangdb00123

wa000012333n.bai

bai

gui

# grep -o "0*" test1 ;不加“-o”參數的話會顯示所有

00

0000

.* ;匹配所有的字符

。。。

^.* ;表示以任意多個字符開頭

。。。

[abc] ;匹配字符集合內任意一個字符[a-z]

[^abc] ;在中括號里面表示非,表示不包含abc

{n,m} ; 重復nm次,前一個字符

{n,} ; 至少N次,多了不限

{n} ; N

{,m} ; 至多m次,少了不限。

注:grep 要對{轉義} /{/},egrep不需要

eg:

#grep "0/{3,5/}" filename ;匹配3到5個0的字符過濾出來

#egrep "0{3}" filename

#grep -E --color=auto "0{1}" test ;加-E參數可不用加“/"轉義符.

注:重要參數“-o 只截取匹配的內容?。?!

總結:

grep命令常參數

-v 排除匹配的內容

-E 支持擴展的正則表達式

-i 忽略大小寫

-o 只輸出匹配的內容

--color=auto 匹配的內容顯示顏色

-n 顯示行號

5.2 基礎正則案例:通過ifconfig獲取ip地址,或特定文本中某些值

方法1

方法1實現思路:先通過grep命令過濾出行,然后通過sed命令的^.*任意字符開始的,和.*$任意字符結尾的進行匹配。

[root@bogon zzbds]# cat test1

wangdb00

wa000012333n.bai

bai

gui

[root@bogon zzbds]# cat test1 |grep "wa00"

wa000012333n.bai

[root@bogon zzbds]# cat test1 |grep "wa00" |sed 's/^.*0000//g'

12333n.bai

[root@bogon zzbds]# cat test1 |grep "wa00" |sed 's/^.*0000//g'|sed 's/33n.*$//g'

123

方法2

實現思路:要用到sed相關參數

sed:

s 替換

-i 修改

-n 取消默認輸出

-p 打印內容

模板:sed -n 's#/(aaa/)/(bbb/)#/1/2#g'

[root@bogon zzbds]# ifconfig|sed -n 's/^.*addr:/(.*/) Bcast:.*$//1/gp'

192.168.26.128

[root@bogon zzbds]#ifconfig|sed -n 's#^.*addr:/(.*/) Bcast:/(.*/) Mask.*$#/1 /2#gp'

192.168.26.128192.168.26.255

5.3 擴展正則表達式

1)+ ; 重復一個或一個以上前面的字符

2)? ; 重復0個或一個前面的字符

3)| ; 用或的方式查找多個符合的字符串

4)() ; 找出“用戶組” 字符串


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 修文县| 湖州市| 红河县| 海宁市| 平遥县| 四川省| 奉化市| 卢龙县| 铜鼓县| 阜平县| 望奎县| 衡东县| 舒城县| 静海县| 元阳县| 兴宁市| 临武县| 宜宾县| 潮州市| 龙海市| 连山| 萝北县| 湘阴县| 大石桥市| 清徐县| 祥云县| 罗平县| 芜湖市| 得荣县| 靖远县| 武强县| 诸城市| 敦煌市| 长白| 科尔| 揭西县| 达孜县| 镇赉县| 鸡西市| 武夷山市| 田林县|