課后習題3–正則表達式

1、查出分區空間使用率的最大百分比值

[root@centos7 ~]# df | grep "^/dev" | grep -v "cdrom$" | tr ' ' ':' | tr -s ':' | cut -d: -f5 | sort   
1%
4%
73%

2、查出用戶UID最大值的用戶名、UID及shell類型

[root@centos7 ~]# cat /etc/passwd | sort -n -t: -k3 | cut -d: -f1,3,7 | tail -1
nfsnobody:65534:/sbin/nologin

3、查出/tmp的權限,以數字方式顯示

[root@centos7 ~]# stat /tmp | head -4 | tail -1 | tr '(/)' ':' | tr ' ' ':' | tr -s ':' | cut -d: -f2
0777

或者

[root@centos7 ~]# stat /tmp | grep "^A.*)$" | tr ' ' '\n' | head -2 | tail -1 | tr -cd '[:digit:]'
0777

4、統計當前連接本機的每個遠程主機IP的連接數(包括端口號),并按從大到小排序

[root@centos7 ~]# netstat -tan | grep "^tcp\>" | tr ' ' '*' | tr -s '*' | cut -d* -f4 | uniq -c | sort -r
      3 10.1.0.17:22
      1 192.168.122.1:53
      1 127.0.0.1:631
      1 127.0.0.1:25
      1 0.0.0.0:22

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

方法一

[root@centos7 ~]# grep "^[sS]" /proc/meminfo 
SwapCached:         6928 kB
SwapTotal:       2097148 kB
SwapFree:        2051836 kB
Shmem:             20884 kB
Slab:             150348 kB
SReclaimable:      84320 kB
SUnreclaim:        66028 kB

方法二

[root@centos7 ~]# grep -i "^s" /proc/meminfo
SwapCached:         6928 kB
SwapTotal:       2097148 kB
SwapFree:        2051836 kB
Shmem:             20884 kB
Slab:             150348 kB
SReclaimable:      84320 kB
SUnreclaim:        66028 kB

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

[root@centos7 ~]# grep -v "^/bin/bash$" /etc/passwd

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

[root@centos7 ~]# grep "^rpc\>" /etc/passwd | cut -d: -f1,3,7
rpc:32:/sbin/nologin

8、找出/etc/passwd中的兩位或三位數,必須是正整數

[root@centos7 ~]# grep -E "\<1[0-9]{1,2}\>" /etc/passwd

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

[root@centos7 ~]# grep "^[[:space:]]\+[^[:space:]]\+.*" /etc/grub2.cfg

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

[root@centos7 ~]# netstat -tan | grep -E "LISTEN[[:space:]]*$" 
tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN     
tcp6       0      0 :::22                   :::*                    LISTEN     
tcp6       0      0 ::1:631                 :::*                    LISTEN     
tcp6       0      0 ::1:25                  :::*                    LISTEN

11、添加用戶bash、testbash、basher以及nologin(其shell為/sbin/nologin),而后找出/etc/passwd文件中用戶名同shell名的行

[root@centos7 ~]# grep -E "^\<(.*)\>.*\<\1\>$" /etc/passwd
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
nologin:x:4346:4346::/home/nologin:/sbin/nologin

12、顯示三個用戶root、mage、wang的用戶名、UID和默認shell

[root@centos7 ~]# grep -E "^(root|mage|wang)\>" /etc/passwd | cut -d: -f1,3,7
root:0:/bin/bash
mage:4347:/bin/bash
wang:4348:/bin/bash

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

grep -E "^[[:alpha:]_]+\(\)" /etc/rc.d/init.d/functions

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

[root@centos7 ~]# echo /etc/rc.d/init.d/functions | grep -E -o "[^/]+/?$"
functions

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

[root@centos7 ~]# echo /etc/rc.d/initd/function | grep -E -o "^/.*/"
/etc/rc.d/initd/

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

[root@centos7 ~]# ifconfig |grep -E -o  '(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])'
10.1.0.17
255.255.0.0
10.1.255.255
127.0.0.1
255.0.0.0
192.168.122.1
255.255.255.0
192.168.122.255

17、取出文本中的全部身份證號

[root@centos6 testdir]# grep -o -E "1[0-9]{17}" f1 
123456789123456789

18、取出文本中的全部手機號碼

[root@centos6 testdir]# grep -o -E "1[0-9]{10}" f2
15335699718

19、取出文本中所有的郵箱地址

[root@centos6 testdir]# grep -o -E "([0-9]{5,}|[a-z])@([1-9]{1,}|[a-z]{1,}).com" f3
9687765@qq.com
12345@yahu.com
o@sina.com
o@163.com

附一個取目錄名的方法,大家幫忙解釋一下哈!

[root@centos7 ~]# echo /etc/rc.d/initd/function/ | grep -E -o "^/.*/\b"
/etc/rc.d/initd/

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

(1)
mfwingmfwing
上一篇 2016-08-07 22:05
下一篇 2016-08-07 22:05

相關推薦

  • 初學正則表達式

      前言:     在學正則表達式之前,有小伙伴講解說,正則表達式在文本處理上功能非常強大、使用非常普遍,并且現在很多的工具軟件都支持它,以后的學習工作中會經常使用,非常靈活,但是靈活的同時又是繁瑣,需要小心翼翼的仔細推敲。抱著認真、好奇的心思聽完了王老的課。我自己理解的正則表達式是,給一些符號賦予一定的涵義…

    Linux干貨 2016-08-12
  • MAN手冊各章節功能介紹及快捷鍵位詳細說明

    MAN手冊各章節功能介紹及快捷鍵位詳細說明 M21-陸東貴 Man命令的作用:獲取外部命令的使用幫助信息; 使用方法:]#  man  COMMAND        選項:        -M /PATH/TO/SOME…

    Linux干貨 2016-10-18
  • GRUB Legacy&Trouble Shooting

    GRUB (Grand Unified Bootloader)        位于系統引導盤的MBR中的Boot Loader。        GRUB是一個來自GNU項目的啟動引導程序。GRUB是多啟動規范的實現,它允…

    Linux干貨 2016-09-13
  • HTTP

    使用CentOS 7和CentOS 6實現以下任務 配置四個基于名稱的虛擬主機;discuzXwordpressdrupal1.在conf.d下新建并編輯虛擬主機配置文件]# cd /etc/httpd/conf.d/]# vim vhost.confcentos6配置   [root@ _93_ conf.d]#&n…

    Linux干貨 2016-10-12
  • 正則 grep查找find(xargs)練手

    1、顯示當前系統上root、fedora或user1用戶的默認shell; ~]# grep -E "^(root|fedora|user1)\>" /etc/passwd | cut -d: -f7 2、找出/etc/rc.d/init.d/functions文件中某單詞后面跟一組小括號的行,形如:hello(); ~]# gre…

    Linux干貨 2016-10-24
  • LVS-nat-dr

    主程序:ipvsadm 配置文件: 規則保存工具:/usr/sbin/ipvsadm-save 規則重載工具:/usr/sbin/ipvsadm-restore 配置文件:/etc/sysconfig/ipvsadm-config ipvsadm使用: 增:      示例:ipvsadm -A -t 172.16.42.1:8…

    2017-08-08
欧美性久久久久