正則表達式與例題

正則表達式與例題

 BRE ERE

由一類特殊字符及文本字符所編寫的模式,其中有些字符(元字符)不表示字符字面意義,而表示控制或通配的功能

程序支持grep ;sed ;  awk ; vim ; less ; nginx ; varnish

元字符分類字符匹配  匹配次數  位置錨定  分組

二.基本正則表達式元字符

1. 匹配任意單個字符

2[] 匹配指定范圍內的任意單個字符

3. [^]  匹配指定范圍外的任意單個字符

4. [:alnum:]  字母和 數字

5. [:alpha:]  代表任何英文大小寫字符,亦即 A-Z, a-z

6. [:lower:]  小寫字母 [:upper:]  大寫字母

7. [:blank:]  空白字符(空格和制表符)

8. [:space:]  水平和垂直的空白字符(比[:blank:] 包含的范圍廣)

9. [:cntrl:]  不可打印的控制字符(退格、刪除、警鈴

10. [:digit:] 十進制數字 [:xdigit:] 十六進制數字

11[:graph:]  可打印的非空白字符

12. [:print:]  可打印字符

13. [:punct:] 標點符號

三.正則表達式

匹配 前面的字符任意次,包括0

貪婪模式:盡可能長的匹配

.*  任意 長度的任意字符

\?  匹配 其前面的字符0 1

\+  匹配 其前面的字符至少1

\{n\}  匹配 前面的字符n

\{m,n\}  匹配 前面的字符至少m 次,至多n

\{,n\}  匹配 前面的字符至多n

\{n,\}  匹配 前面的字符至少n

位置錨定:定位出現的位置

行首錨定,用于模式的最左側

行尾錨定,用于模式的最右側

^PATTERN$ 用于模式匹配整行

^$ 空行

^[[:space:]]*$ 空白行

\< \b  詞首錨定,用于單詞模式的左側

\> \b  詞尾錨定;用于單詞模式的右側

\<PATTERN\>

四.例題(紅色圓點代表答案,藍色代表輸入的命令)

1、顯示/proc/meminfo文件中以大小s開頭的行:(要求:使用兩種方式)

l  [root@localhost
~]# cl

l  [root@localhost ~]# egrep -i ^s /proc/meminfo

l  SwapCached:            0 kB

l  SwapTotal:       3905532 kB

l  SwapFree:        3905532 kB

l  Shmem:             11104 kB

l  Slab:             123848 kB

l  SReclaimable:      65544 kB

l  SUnreclaim:        58304 kB

l  ——————————————————————————-

l  [root@localhost ~]# egrep -e ^s -e ^S /proc/meminfo

l  SwapCached:            0 kB

l  SwapTotal:       3905532 kB

l  SwapFree:        3905532 kB

l  Shmem:             11104 kB

l  Slab:             123848 kB

l  SReclaimable:      65544 kB

l  SUnreclaim:        58304 kB

2、顯示/etc/passwd文件中不以/bin/bash結尾的行:

l  [root@localhost ~]# cat /etc/passwd |egrep -v
“/bin/bash”$

l  bin:x:1:1:bin:/bin:/sbin/nologin

l  daemon:x:2:2:daemon:/sbin:/sbin/nologin

l  adm:x:3:4:adm:/var/adm:/sbin/nologin

l  lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

l  sync:x:5:0:sync:/sbin:/bin/sync

l  shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

l  halt:x:7:0:halt:/sbin:/sbin/halt

3、顯示用戶rpc默認的shell程序

l  [root@localhost ~]# egrep ‘^rpc\>’ /etc/passwd |cut
-d: -f7

l  /sbin/nologin

4、找出/etc/passwd中的兩位或三位數

l  [root@localhost ~]# egrep “[[:digit:]]{2,3}”
/etc/passwd

l  mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

l  operator:x:11:0:operator:/root:/sbin/nologin

l  games:x:12:100:games:/usr/games:/sbin/nologin

l  ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

l  nobody:x:99:99:Nobody:/:/sbin/nologin

5、顯示centos7/etc/grub2.cfg文件中,至少以一個空白字符開頭的且后面存非空白字符的行

l  [root@localhost ~]# egrep
“^[[:space:]]+[^[:space:]]” /etc/grub2.cfg

l  load_env

l  set default=”${next_entry}”

l  set next_entry=

l  save_env next_entry

l  set boot_once=true

l  set default=”${saved_entry}”

l  menuentry_id_option=”–id”

l  menuentry_id_option=””

6、找出“netstat -tan” 命令的結果中以‘LISTEN‘后跟任意多個空白字符結尾的行

l  [root@localhost ~]# netstat -tan | egrep
“LISTEN[[:space:]]*$”

l  tcp       
0      0 0.0.0.0:111             0.0.0.0:*               LISTEN    

l  tcp       
0      0 192.168.122.1:53        0.0.0.0:*               LISTEN    

l  tcp       
0      0 0.0.0.0:22              0.0.0.0:*               LISTEN    

l  tcp       
0      0 127.0.0.1:631           0.0.0.0:*               LISTEN    

7、顯示centos7上所有系統用戶的用戶名和UID

l  [root@localhost ~]# cut -d: -f1,3 /etc/passwd | egrep
“[1-9]{1,3}$”

l  bin:1

l  daemon:2

l  adm:3

l  lp:4

l  sync:5

l  shutdown:6

l  halt:7

l  mail:8

l  operator:11

8、找出/etc/passwd用戶名同shell名的行

l  [root@localhost ~]# egrep “^(.*):.*\1$”
/etc/passwd

l  sync:x:5:0:sync:/sbin:/bin/sync

l  shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

l  halt:x:7:0:halt:/sbin:/sbin/halt

l  [root@localhost ~]# ^C

9、利用dfegrep,取出磁盤各分區利用率,并從大到小排序

l  [root@localhost ~]# df |grep ^/dev/sd|egrep -o “\b[[:digit:]]{1,3}\b%”|sort
-rn

l  31%

l  18%

l  1%

10、顯示三個用戶root、magewangUID和默認shell

l  [root@localhost ~]#
egrep “^(root|mage|wang)\>” /etc/passwd | cut -d: -f3,7

l  0:/bin/bash

l  [root@localhost
~]#

11、找出/etc/rc.d/init.d/functions文件中行首為某單詞(包括下劃線)后面跟一個小括號的行

l  [root@localhost ~]# egrep -o
^”[_[:alpha:]]+\(\)” /etc/rc.d/init.d/functions

l  checkpid()

l  __kill_pids_term_kill_checkpids()

l  __kill_pids_term_kill()

l  __pids_var_run()

l  __pids_pidof()

l  daemon()

l  killproc()

12、使用egrep取出/etc/rc.d/init.d/functions中其基名。

l  [root@localhost ~]# echo
“/etc/rc.d/init.d/functions”|egrep -o “[^/]+$”

l  Functions

13、使用egrep取出上面的路徑的目錄名。

l  [root@localhost ~]# echo
“/etc/rc.d/init.d/functions”|egrep -o “^.*/”

l  /etc/rc.d/init.d/

14、統計last命令中以root登錄的每個主機IP地址登錄次數

l  [root@localhost ~]# last
| egrep -o “^root\>.*[0-9]\.[0-9]{1,3}” |tr -s ” ”
“%”|cut -d% -f3|uniq -c

l  18 172.17.250.182

l  1 172.17.254.44

l  2 172.17.254.176

l  2 172.17.250.182

l  1 172.18.250.76

l  2 172.17.254.44

l  8 172.17.250.182

15、利用擴展正則表達式分別表示0-9 、10-99 100-199、200-249 250-255

0-9  ;【1-9】【0-9】;   10-9】【0-9 ; 20-4】【0-9】;  250-5

16、顯示ifconfig 命令結果中所有IPv4 地址

l  [root@localhost ~]#
ifconfig  | egrep  -o “([0-9]{1,3}\.){3}[0-9]{1,3}”

l  172.17.252.64

l  255.255.0.0

l  172.17.255.255

l  172.17.252.65

l  255.255.0.0

l  172.17.255.255

l  127.0.0.1

l  255.0.0.0

l  192.168.122.1

l  255.255.255.0

17、將此字符串:welcome to magedu linux 中的每個字符去重并排序,重復次數多的排到前面

l  [root@localhost ~]# echo
“welcome to  magedu linux” |
egrep -o  “[[:alpha:]]” |
sort  | uniq -c | sort -nr

l  3 e

l  2 u

l  2 o

l  2 m

l  2 l

l  1 x

l  1 w

l  1 t

l  1 n

l  1 i

l  1 g

l  1 d

l  1 c

l  1 a

 

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

(0)
TouchTouch
上一篇 2017-07-29 16:35
下一篇 2017-07-29 17:03

相關推薦

  • LVS基本原理

    LVS基本原理 簡介 負載調度器、真實服務器群節點一起被稱為LVS。LVS負載調度器(有時也稱為負載平衡器),接收所服務的所有接入服務集群的請求,并決定集群中的哪個節點應該回復其請求。 1)負載調度器(Director):作為整個集群的前端,主要將用戶請求分發至真實服務器中進行處理。 2)真實服務器池:由多個功能相同的真實服務器組成,為用戶提供真正的網絡服務…

    Linux干貨 2016-12-27
  • 第四周練習

    1、復制/etc/skel目錄為/home/tuser1, 要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 cp -r /etc/skel /home/tuser1 chmod -R 700 /home/tuser1 2、編輯/etc/group文件,添加組hadoop。 vi /etc/group hadoop:x:2017 …

    Linux干貨 2017-08-04
  • MySQL高可用架構之Galera Cluster

    MySQL高可用架構之Galera Cluster 1、實驗準備及拓撲 至少需要三個節點 node1 192.168.150.137 node2 192.168.150.138 node3 192.168.150.139 mariadb版本為mariadb的支持galera cluster的分支版本 MariaDB-Galera-server-5.5.46 …

    Linux干貨 2017-03-31
  • N_28 linux基礎知識

    1.計算機的組成
    2.linux的各發行版
    3.linux的哲學思想
    4.一些linux的基本命令
    5.幫助信息
    6.FHS

    2017-12-01
  • MySQL常用命令

    本文大綱 MySQL命令             (0%) 交互式CLI工具     服務端命令 mysqld服務器程序 數據類型 DDL語句                 &n…

    Linux干貨 2017-02-16
  • Linux網絡配置

    Linux網絡基礎配置 將Linux主機接入到網絡,需要配置網絡相關設置。 一般包括如下內容:     主機名     IP/netmask     路由:默認網關     DNS服務器  …

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