0804正則表達式作業

  1. 用正則表達式表示IP地址

        首先來分析一下,制IP地址是一個32位的二進制數,通常被分割為4個“8位二進制數”(也就是4個字節)。IP地址通常用“點分十進制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之間的十進制整數。例:點分十進IP地址(100.4.5.6),實際上是32位二進制數(01100100.00000100.00000101.00000110)。ip每一位的值0-255,用數值來匹配,我會分成一位數值,兩位數值的,和三位數值的,還有一個地方需要注意,那就是取255的時候不能取到259,這樣就超出了范圍,具體如下:

      ifconfig|grep -Eo –color=auto "\<([0-9]|[1-9][0-9]|1[0-9}{2}|2[0-4][0-9]|25[0-5])\>\.\<([1-9]|[1-9][0-9]|1[0-9}{2}|2[0-4][0-9]|25[0-5])\>\.\<([0-9]|[1-9][0-9]|1[0-9}{2}|2[0-4][0-9]|25[0-5])\>\.\<([1-9]|[1-9][0-9]|1[0-9}{2}|2[0-4][0-9]|25[0-5])\>"

   

     ifconfig  |grep -Eo "(\<([0-9]|1[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]\>)\.){3}(\<[0-9]|1[0-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]\>)" –color=auto

    ifconfig | grep -o '\b[0-9]\{1,3\}\b\.\b[0-9]\{1,3\}\b\.\b[0-9]\{1,3\}\b\.\b[0-9]\{1,3\}\b'

    哇塞這也太長了把,對沒錯是很長,好現在我來拆分來講解下

    [0-9]:這個很容易理解,表示的是一位數,正則表達式中一位表示的意思匹配任意單個字符,那我[1-9]匹配的就是從0到10的數字。

    [1-9][0-9]:這個表示的是兩位數字,兩個中括號就必須要匹配兩個數字,個位數[0-9]可以隨意變換,十位數也是如此,個位數和十位數隨意組合就成了從10-99之間的數字了。

    1[0-9]{2}:這個表示的是三位數,百位數是1,十位數從0到9隨意變換,個位數也是如此,最終隨意組合組成的數值就是從100-199的數值了。

    2[0-4][0-9]:這個就有點特殊了,因為ip的最大值是255,我要是直接這樣匹配2[0-5[0-9],這個數字就到259了直接超出范圍,我把十位數限制在4,個位數可以隨意變換,最終組成的數值就是200-249了。

    25[0-5]:這次我直接把百位數和十位數給指定,個位數就在0-5之間隨意變換,最大的數值固定在255,最終組成的數值就是250-255了。

ip地址由4位十進制數值組成了,把匹配的項分組四組,但是ip地址之間是有個“.”的,“.”在正則表達式中表示任意單個字符,這里就需要用“\”來進行轉意了,最終組成成四組就是匹配ip地址了。

1.jpg

QQ截圖20160808092710.jpg

3.jpg

    2. 用正則表達式表示手機號

      

  grep -Eo "^\<1[3578][0-9]{9}\>"

        grep -Eo"\<(139|138|137|135|134|159|158|157|150|151|152|188|130|131|

132|156|155|133|153|189)[0-9]{9})\>"  filname

    grep -Eo "\<(13[0-9]|15[[01356789]|18[01235789])[0-9]{8}  filename

        固定前三位號碼段,后面9位數字隨機變換。

1.jpg

        3.用正則表達式表示身份證號18

        我國現行的二代身份證號碼是按國家質量技術監督局于1999年7月1日實施的GB11643-1999《公民身份號碼》標準執行的。由17位數字本體碼和
1位校驗碼組成。排列順序從左至右依次為:6位數字地址碼,8位數字出生日期碼,3位數字順序碼和1位校驗碼,地址碼的第一位數值的取值范圍是1-8,這里的年份我從1900至2099,身份證具體編碼規則:http://baobao.sohu.com/20160512/n449226463.shtml

     grep  -Eo  "\<((1[1-5])|(2[1-3])|(3[1-7])|(4[1-6])|(5[0-4])|(6[1-5])|(71|81|82))([0-9]){4}(19|20)([0-9]){2}((0[0-9])|(1[0-2]))(0[1-9]|(1[0-9])|(2[0-9])|(3[0-1]))([0-9]){3}([0-9]|x)\>"

1.png


        4、用正則表達式表示郵箱

      郵箱的格式是由用戶@主機名組成,通常為username@servername.com

      cat mail|egrep "\<([[:alnum:]]+(-|_)*[[:alnum:]]*)\>@([[:alnum:]]+\.)+[[:alnum:]]+"

      郵箱格式由大小寫字母數字下劃線等組成,alnum是數字字母的組合,讓他匹配多次,橫杠和下劃線可有可無,所以用*來匹配,主機名也是有數字字母中間中間還有個“.”點這個地方需要轉意,不然表示的就是任意的單個字符了

2.png



       

原創文章,作者:fszxxxks,如若轉載,請注明出處:http://www.www58058.com/30638

(0)
fszxxxksfszxxxks
上一篇 2016-08-10
下一篇 2016-08-10

相關推薦

  • 0805隨堂練習

    文本處理練習: 1.找出本機ip地址  [root@localhost ~]# ifconfig |head -2 |tail -1 |tr -s ' ' ':' |cut -d: -f3  10.1.252.221 2.查看本機分區最大的利用率  [root@localhost ~]# …

    Linux干貨 2016-08-07
  • ssh登陸與端口轉發

    ssh: secure shell, protocol, 22/tcp,  安全的遠程登錄     具體的軟件實現:OpenSSH  : ssh 協議的開源實現,CentOS 默認安裝dropbear :另一個開源實現SSH      協議版本   …

    Linux干貨 2017-04-13
  • 高可用集群部署文檔

    同學們都很活躍,自己好久沒寫了,也動動筆,下面文章寫著玩的,如有錯誤請聯系(NET7-粵-義薄云天) 高可用集群部署文檔   目錄: 目錄: 1 項目需求: 2 實現方式: 2 拓撲圖: 3 系統及軟件版本: 3 安裝步驟: 4 IP分配: 4 LVS和keepalived的安裝和配置: 4 LVS主配置: 4 LVS2備 配置: 7 w…

    Linux干貨 2015-08-11
  • Linux Services and Security–part1

    一、詳細描述一次加密通訊的過程,結合圖示最佳 以Bob和Alice安全通訊為例: Bob<———>Alice 1. Bob要和Alice安全通信首先要取得對方的公鑰,即對方的證書,并驗證證書的合法性。驗證過程和內容: 1)、用CA的公鑰(雙方已知)解密對方證書中CA的簽名;能解密說明證書來原可靠; 2)、用證書中標記的“簽名算法”來計算證書的相關…

    2017-10-17
  • SHELL編程之數組運用及YUM軟件包管理

    SHELL編程中,當要引用到多個值的時候,一個一個地進行變量賦值會讓我們的腳本變得繁瑣,不利于代碼的優化,所以,就需要通過數組進行定義,優化代碼,減少不必要的定義和命令操作。 SHELL中的數組:存儲多個元素的連續內存空間 數組名:整個屬組只有一個名字 數組索引: 編號從0開始   數組名[索引]   ${array_name[index…

    Linux干貨 2016-08-24
  • linux掛載的基本使用

    掛載   掛載是指將一個設備(通常是存儲設備)掛接到一個已存在的目錄上。 我們要訪問存儲設備中的文件,必須將文件所在的分區(已有文件系統)掛載到一個已存在的目錄上, 然后通過訪問這個目錄來訪問存儲設備。 掛載條件 1、掛載點必須是一個目錄。 2、一個分區掛載在一個已存在的目錄上,這個目錄可以不為空,但掛載后這個目錄下以前的內容將隱藏不可用。對于其他…

    Linux干貨 2016-09-07
欧美性久久久久