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 10:27
下一篇 2016-08-10 10:27

相關推薦

  • 第九周練習

    1、寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin);分別這兩類用戶的個數;通過字符串比較來實現; #!/bin/bash # nologin=$(awk -F: '$NF=="/sbin/nologin"{print $NF}…

    Linux干貨 2016-12-21
  • 編譯安裝LAMP-centos7

    編譯安裝LAMP (centos7 基于模塊化) 編譯安裝所需版本 Httpd 2.4,PHP 5.4,MariaDB 5.5通用二進制格式(綠色安裝包) MAriDB5.5 綠色安裝 1、#mkdir lamp :創建一個文件夾,存放軟件的版本 2、從官網上下載httpd2.4 mariaDb 5.5 PHP 5.4到該文件夾下 3、# tar xvf m…

    Linux干貨 2017-05-17
  • 第十一周作業

    第十一周作業 1、詳細描述一次加密通訊的過程,結合圖示最佳 第一階段:ClientHello: 支持的協議版本,比如tls 1.2; 客戶端生成一個隨機數,稍后用戶生成“會話密鑰” 支持的加密算法,比如AES、3DES、RSA; 支持的壓縮算法; 第二階段:ServerHello 確認使用的加密通信協議版本,比如tls 1.2; 服務器端生成一個隨機數,稍后…

    2017-10-29
  • 壓縮、解壓縮及歸檔工具

    壓縮、解壓縮及歸檔工具 一、雜項知識整理 1、find -iname 忽略大小寫;     -inum 查找指定inode號的文件;  find 在有條件判斷的時候,如果不加括號,最后的命令會被當成以為第二個條件之后的:例 [root@localhost shelltest]# find&…

    Linux干貨 2016-08-18
  • Shell腳本編程入門

    認識Shell Shell原意為貝殼 Linux系統中的shell是一個特殊的應用程序,它介于操作系統內核與用戶之間,充當一個“命令解釋器”的角色,負責接收用戶輸入的操作指令(命令)并進行解釋,將需要執行的操作傳遞給內核執行,并輸出執行結果。 可以使用命令查看當前使用的是哪種shell以及當前Linux系統中都支持哪些shell種類。   查看當前…

    Linux干貨 2016-08-12
  • llinux常用命令及bash基本特性

    一、常用的文件和目錄管理命令 1. pwd命令:用來顯示當前的工作目錄 語法格式:直接輸入pwd回車顯示當前的工作目錄 示例:用pwd命令顯示當前的工作目錄 [root@suyiwen ~]# pwd /root 2. mkdir命令:用來創建目錄文件 語法格式:mkdir [OPTION]… DIRECTORY…常用option: -m,用來指定目錄的權限…

    Linux干貨 2018-03-11
欧美性久久久久