中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎樣看待Linux系統的正則表達式

發布時間:2021-10-22 09:12:50 來源:億速云 閱讀:140 作者:柒染 欄目:云計算

這篇文章給大家介紹怎樣看待Linux系統的正則表達式,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

Linux系統正則表達式的介紹

學習Linux系統的朋友們肯定都會接觸到正則表達式,或者開發人員也會遇到這個東東,說起正則表達式,使我想起“會者不難,難者不會”這句話,的確如此,相信很多人剛接觸正則表達式,肯定一頭霧水,覺得很難學會,是的,民工哥也是這么個感覺,但是相信大家都認真去學習、去練習,肯定能學會的。

那么今天就來聊一聊正則表達式

何謂正則表達式呢?網上一堆的名詞介紹,大家可以自己查找,民工哥的理解是:首先它是一種文本模式,然后它的作用就處理字符串的一種方法

給定一個正則表達式和另一個字符串,我們可以達到如下的目的

1. 給定的字符串是否符合正則表達式的過濾邏輯(稱作“匹配”)

2. 可以通過正則表達式,從字符串中獲取我們想要的特定部分

正則表達式的特點是:

1. 靈活性、邏輯性和功能性非常的強

2. 可以迅速地用極簡單的方式達到字符串的復雜控制

3. 對于剛接觸的人來說,比較難懂

因些我們也是有必要了解下正則需要用到的字符含義

\ 轉義符,就是將特殊符號的意義去除掉

.任意一個字符

* 重復零個或者多個*前的一個字符

\{n,m\連續n到m個前一個重復字符

[ ]字符集合

.*匹配所有字符

^匹配以以某字符開頭

$匹配以以某字符結尾

[^]取反

^.*匹配多個任意字符開頭

|或

[A-Z] 26個大寫字母
[a-z] 26個小寫字母
[0-9] 0至9數字

[A-Za-z0-9] 26個大寫字母、26個小寫字母和0至9數字

\d匹配一個數字字符

\w匹配包括下劃線的任意單詞字符

grep  文本搜索工具

 grep 參數 查找條件 文件名

主要參數:

-c:只輸出匹配行的計數

-I:不區分大 小寫(只適用于單字符

-l:查詢多文件時只輸出包含匹配字符的文件名

-n:顯示匹配行及 行號

-s:不顯示不存在或無匹配文本的錯誤信息

-v:顯示不包含匹配文本的所有行

sed 在線編輯工具

[root@Centos bbs]# man sed

NAME

       sed - stream editor for filtering and transforming text

用于過濾或轉換文本的流編輯器

sed 參數 動作

主要參數:

-n:取消默認輸出

-i:修改文件內容

動作:

p 打印

d 刪除

s#x#xx#g 替換與全局替換  將X全局替換掉XX

awk  文本處理工具

[root@Centos /]# man awk

NAME

       gawk - pattern scanning and processing language

awk '條件1 {動作1} 條件2{動作2}........'    文件名

-F 使用分隔符

==等于

NR     取行

grep、sed、awk的參數非常的多,大家有興趣可以慢慢研究,查看幫助文檔

舉例說明

例一:將系統用ifconfig命令列出的信息中eth0的IP地址打印出來

怎樣看待Linux系統的正則表達式
也就是說用命令將192.168.1.2輸出在屏幕上

方法一:

[root@Centos /]# ifconfig eth0 |grep "inet addr"

          inet addr:192.168.1.2  Bcast:192.168.1.255  Mask:255.255.255.0

首先將帶有IP地址行過濾打印出來,然后再進行過濾取出IP地址

[root@Centos /]# ifconfig eth0 |grep "inet addr"|awk -F '[ :]+' '{print $4}'

192.168.1.2

以空格和:做為分隔符,+代表前面多個重復的分隔符識為一個,將第四列打印

方法二:

[root@Centos /]# ifconfig eth0

eth0      Link encap:Ethernet  HWaddr 00:0C:29:AA:CA:2B  

          inet addr:192.168.1.2  Bcast:192.168.1.255  Mask:255.255.255.0

          inet6 addr: fe80::20c:29ff:feaa:ca2b/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:7005 errors:0 dropped:0 overruns:0 frame:0

          TX packets:3095 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000 

          RX bytes:709421 (692.7 KiB)  TX bytes:454116 (443.4 KiB)

[root@Centos /]# ifconfig eth0|awk -F '[ :]+' NR==2                取整個內容第二行

          inet addr:192.168.1.2  Bcast:192.168.1.255  Mask:255.255.255.0

[root@Centos /]# ifconfig eth0|awk -F '[ :]+' 'NR==2 {print $4}'      打印第四列

192.168.1.2

方法三:

[root@Centos /]# ifconfig eth0

eth0      Link encap:Ethernet  HWaddr 00:0C:29:AA:CA:2B  

          inet addr:192.168.1.2  Bcast:192.168.1.255  Mask:255.255.255.0

          inet6 addr: fe80::20c:29ff:feaa:ca2b/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:7271 errors:0 dropped:0 overruns:0 frame:0

          TX packets:3244 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000 

          RX bytes:733402 (716.2 KiB)  TX bytes:473258 (462.1 KiB)

[root@Centos /]# ifconfig eth0|sed -n 2p        將第二行打印

          inet addr:192.168.1.2  Bcast:192.168.1.255  Mask:255.255.255.0

[root@Centos /]# ifconfig eth0|sed -n 2p|sed 's#^.*addr:# #g'

 192.168.1.2  Bcast:192.168.1.255  Mask:255.255.255.0

將以空格.*(前任意字符)addr:開頭的內容替換成空輸出

[root@Centos /]# ifconfig eth0|sed -n 2p|sed 's#^.*addr:# #g'|sed 's#  Bcast.*$# #g'                   將以兩空格Bcast.*(后任意字符)結尾的內容替換成空輸出

 192.168.1.2 

方法四:

[root@Centos /]# ifconfig eth0

eth0      Link encap:Ethernet  HWaddr 00:0C:29:AA:CA:2B  

          inet addr:192.168.1.2  Bcast:192.168.1.255  Mask:255.255.255.0

          inet6 addr: fe80::20c:29ff:feaa:ca2b/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:7723 errors:0 dropped:0 overruns:0 frame:0

          TX packets:3434 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000 

          RX bytes:776543 (758.3 KiB)  TX bytes:493886 (482.3 KiB)

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

192.168.1.2

將需要的內容匹配到()中,然后將()中的內容打印出來

例二:將/目錄下etc目錄的權限轉換成數字輸出

方法一:

[root@Centos /]# stat /etc      stat獲取文件或目錄的屬性信息

  File: `/etc'

  Size: 12288           Blocks: 24         IO Block: 4096   directory

Device: fd00h/64768d    Inode: 2883585     Links: 116

Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)

Access: 2016-08-21 11:07:01.802852859 +0800

Modify: 2016-08-21 11:06:44.569852839 +0800

Change: 2016-08-21 11:06:44.569852839 +0800

[root@Centos /]# stat /etc|sed -n 4p

Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)打印第四行

[root@Centos /]# stat /etc|sed -n 4p|cut -d "(" -f2        以(為分隔符打印第二列

0755/drwxr-xr-x)  Uid: 

[root@Centos /]# stat /etc|sed -n 4p|cut -d "(" -f2|cut -d "/" -f1 

0755                                                                           以/為分隔符打印第二列

方法二:

[root@Centos /]# stat /etc|sed -n 4p|cut -d "(" -f2|cut -c 2-4

755                       以(分隔符取第二列,然后再取2-4個字符

方法三:

[root@Centos /]# stat /etc|sed -n 4p|awk -F '(' '{print $2}'|awk -F '/' '{print $1}'

0755                    以(分隔符打印第二列|以/分隔符打印第一列

方法四:

[root@Centos /]# stat /etc|sed -n 4p                   打印第四行

Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)

[root@Centos /]# stat /etc|sed -n 4p|awk -F '[(/]' '{print $2}'         指定多分隔符

0755

方法五:其實stat 命令本身就有參數可以直接獲取

[root@Centos /]# stat -c %a /etc

755

[root@Centos /]# stat -c %a /root

550

[root@Centos /]# stat -c %a /tmp

1777

關于怎樣看待Linux系統的正則表達式就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

西丰县| 滕州市| 河源市| 绍兴县| 旌德县| 承德市| 昭苏县| 奉节县| 永仁县| 定陶县| 泊头市| 蕉岭县| 孟村| 濮阳市| 浙江省| 大关县| 法库县| 黎平县| 新乐市| 桐乡市| 武冈市| 嘉鱼县| 禄丰县| 靖远县| 泰州市| 灌南县| 长汀县| 涡阳县| 新建县| 绥芬河市| 饶河县| 崇仁县| 济南市| 界首市| 铁力市| 瓦房店市| 新平| 安多县| 秭归县| 乌审旗| 名山县|