加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式练习题

发布时间:2020-12-13 22:05:14 所属栏目:百科 来源:网络整理
导读:1.显示/proc/meminfo文件中以大小s开头的行;(要求:使用两种方式) 可有四种方式 [root@CentOS7~]#cat/proc/meminfo|grep-E"^(s|S)"SwapCached:0kBSwapTotal:2097148kBSwapFree:2097148kBShmem:7320kBSlab:74112kBSReclaimable:28308kBSUnreclaim:45804kB[ro

1.显示/proc/meminfo文件中以大小s开头的行;(要求:使用两种方式) 可有四种方式

[root@CentOS7~]#cat/proc/meminfo|grep-E"^(s|S)"
SwapCached:0kB
SwapTotal:2097148kB
SwapFree:2097148kB
Shmem:7320kB
Slab:74112kB
SReclaimable:28308kB
SUnreclaim:45804kB
[root@CentOS7~]#cat/proc/meminfo|grep-E-i"^s"
SwapCached:0kB
SwapTotal:2097148kB
SwapFree:2097148kB
Shmem:7320kB
Slab:74112kB
SReclaimable:28308kB
SUnreclaim:45804kB
[root@CentOS7~]#cat/proc/meminfo|grep-E"^[sS]"
SwapCached:0kB
SwapTotal:2097148kB
SwapFree:2097148kB
Shmem:7320kB
Slab:74112kB
SReclaimable:28308kB
SUnreclaim:45804kB
[root@CentOS7~]#cat/proc/meminfo|grep-e"^s"-e"^S"
SwapCached:0kB
SwapTotal:2097148kB
SwapFree:2097148kB
Shmem:7320kB
Slab:74112kB
SReclaimable:28308kB
SUnreclaim:45804kB
[root@CentOS7~]#


2.显示/etc/passwd文件中不以/bin/bash结尾的行

[root@CentOS6~]#grep-E-v"/bin/bash$"/etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTPUser:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
dbus:x:81:81:Systemmessagebus:/:/sbin/nologin
usbmuxd:x:113:113:usbmuxduser:/:/sbin/nologin
rpc:x:32:32:RpcbindDaemon:/var/cache/rpcbind:/sbin/nologin
rtkit:x:499:499:RealtimeKit:/proc:/sbin/nologin
avahi-autoipd:x:170:170:AvahiIPv4LLStack:/var/lib/avahi-autoipd:/sbin/nologin
vcsa:x:69:69:virtualconsolememoryowner:/dev:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
rpcuser:x:29:29:RPCServiceUser:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:AnonymousNFSUser:/var/lib/nfs:/sbin/nologin
haldaemon:x:68:68:HALdaemon:/:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
apache:x:48:48:Apache:/var/www:/sbin/nologin
saslauth:x:498:76:Saslauthduser:/var/empty/saslauth:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
pulse:x:497:495:PulseAudioSystemDaemon:/var/run/pulse:/sbin/nologin
sshd:x:74:74:Privilege-separatedSSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
nologin:x:510:514::/home/nologin:/sbin/nologin
[root@CentOS6~]#


3.显示用户rpc默认的shell程序

[root@CentOS6~]#grep-E"^rpc&;"/etc/passwd#取出rpc用户信息
rpc:x:32:32:RpcbindDaemon:/var/cache/rpcbind:/sbin/nologin
[root@CentOS6~]#grep-E"^rpc&;"/etc/passwd|cut-d:-f7#取出shell
/sbin/nologin
[root@CentOS6~]#


4.找出/etc/passwd中的两位或三位数

[root@CentOS6~]#grep-o"&;[0-9]{2,3}&;"/etc/passwd
12
10
14
11
12
100
13
30
14
50
99
99
81
81
113
113
32
32
499
499
170
170
69
69
173
173
29
29
68
68
38
38
48
48
498
76
89
89
27
27
42
42
497
495
74
74
72
72
500
500
501
501
502
503
503
507
504
508
505
509
506
510
507
511
508
512
509
513
510
514
511
515
512
516
[root@CentOS6~]#


5.显示/etc/grub.conf文件中,至少以一个空白字符开头的且后面存非空白字符的行

[root@CentOS6~]#grep"^[[:space:]]+[^[:space:]]"/etc/grub.conf
root(hd0,0)
kernel/vmlinuz-2.6.32-642.el6.x86_64roroot=UUID=f4d977bb-af76-4617-b07f-9c70ae42a056rd_NO_LUKSrd_NO_LVM.UTF-8rd_NO_MDSYSFONT=latarcyrheb-sun16crashkernel=autoKEYBOARDTYPE=pcKEYTABLE=usrd_NO_DMrhgbquiet
initrd/initramfs-2.6.32-642.el6.x86_64.img
[root@CentOS6~]#


6.找出"netstat -tan"命令的结果中以'LISTEN'后跟0、1或多个空白字符结尾的行

[root@CentOS7~]#netstat-tan|grep-o"LISTEN[[:space:]]*$"
LISTEN
LISTEN
LISTEN
LISTEN
LISTEN
LISTEN
LISTEN
[root@CentOS7~]#


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

[root@CentOS6~]#grep"^([^:]+&;).*&;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
bash:x:507:511::/home/bash:/bin/bash
nologin:x:510:514::/home/nologin:/sbin/nologin
[root@CentOS6~]#


扩展正则表达式



1.显示当前系统root、mage或wang用户的UID和默认shell

[root@CentOS6~]#cat/etc/passwd|grep-E"^(root|mage|wang)&;"#匹配出root、mage、wang三个用户信息
root:x:0:0:root:/root:/bin/bash
mage:x:511:515::/home/mage:/bin/bash
wang:x:512:516::/home/wang:/bin/bash
[root@CentOS6~]#cat/etc/passwd|grep-E"^(root|mage|wang)&;"|cut-d:-f1,3,7#取出用户名、UID、shell
root:0:/bin/bash
mage:511:/bin/bash
wang:512:/bin/bash
[root@CentOS6~]#


2.找出/etc/rc.d/init.d/functions文件中行首为某单词(包括下划线)后面跟一个小括号的行

[root@CentOS6~]#cat/etc/rc.d/init.d/functions|grep-E"[_[:alpha:]]+()"
fstab_decode_str(){
checkpid(){
__readlink(){
__fgrep(){
__kill_pids_term_kill_checkpids(){
__kill_pids_term_kill(){
__umount_loop(){
__source_netdevs_fstab(){
__source_netdevs_mtab(){
__umount_loopback_loop(){
__find_mounts(){
__pids_var_run(){
__pids_pidof(){
daemon(){
killproc(){
pidfileofproc(){
pidofproc(){
status(){
echo_success(){
echo_failure(){
echo_passed(){
echo_warning(){
update_boot_stage(){
success(){
failure(){
passed(){
warning(){
action(){
action_silent(){
strstr(){
confirm(){
get_numeric_dev(){
is_ignored_file(){
is_true(){
is_false(){
apply_sysctl(){
key_is_random(){
find_crypto_mount_point(){
init_crypto(){
[root@CentOS6~]#


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

[root@CentOS6~]#echo/etc/rc.d/init.d/functions/|grep-E-o"[^/]+/?$"#匹配以非斜线结尾的字符至少一次
functions/
[root@CentOS6~]#echo/etc/rc.d/init.d/functions/|grep-E-o"[^/]+/?$"|grep-E-o"[^/]+"#过滤掉结尾的/
functions
[root@CentOS6~]#


4.使用egrep取出上面路径的目录名

[root@CentOS6~]#echo/etc/rc.d/init.d/functions/|grep-E-o"^/.*[^/]"#首先过滤掉结尾的/
/etc/rc.d/init.d/functions
[root@CentOS6~]#echo/etc/rc.d/init.d/functions/|grep-E-o"^/.*[^/]"|grep-E-o"^/.*/"#取出目录名
/etc/rc.d/init.d/
[root@CentOS6~]#


5.统计以root身份登录的每个远程主机IP地址的登录次数

[root@CentOS7~]#last|grep-E-o"^root&;.*([[:digit:]]+.){3}[[:digit:]]+"|tr-s''|cut-d''-f1,3#取出当前系统已root身份登录的IP
root10.1.250.60
root10.1.250.60
root10.1.250.60
root10.1.250.60
root10.1.250.60
root10.1.250.60
root10.1.250.60
root10.1.250.60
root10.1.250.60
root10.1.250.60
root10.1.250.60
root10.1.250.60
root10.1.250.60
root10.1.250.60
root172.18.19.139
root192.168.0.107
root192.168.0.109
root10.1.250.60
root10.1.250.60
root10.1.250.60
root10.1.250.60
root10.1.250.60
root10.1.250.60
root10.1.250.60
root10.1.250.60
[root@CentOS7~]#last|grep-E-o"^root&;.*([[:digit:]]+.){3}[[:digit:]]+"|tr-s''|cut-d''-f1,3|sort|uniq-c#取出重复次数
22root10.1.250.60
1root172.18.19.139
1root192.168.0.107
1root192.168.0.109
[root@CentOS7~]#


6.利用扩展正则表达式分别表示0-9、10-99、100-199、200-249、250-255

[root@CentOS6~]#grep"[0-9][1-9][0-9]1[0-9]{2}2[0-4][0-9]25[0-5]"

7.显示ifconfig命令结果中所有IPv4地址

[root@CentOS6~]#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.252.233
10.1.255.255
255.255.0.0
127.0.0.1
255.0.0.0
[root@CentOS6~]#


8.统计/etc/init.d/functions 文件中每个单词出现的次数,并按频率从高到低显示

[root@CentOS6~]#cat/etc/rc.d/init.d/functions|tr-sc'[:alpha:]''n'|sort|uniq-c|sort-nr-t''-k1
83if
77then
75pid
73echo
72fi
61return
57dev
54file
50n
46local
42kill
39z
36base
35remaining
31a
30d
27in
25null
24key
23is
23fstab
23done
23do
23awk
22pids
22list
21for
21BOOTUP
20to
20p
20dst
19shift
...


9.正则表达式表示身份证号

[root@CentOS7~]#egrep"&;((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[1-9])|(1[0-2]))(0[1-9]|([0-9])|(2[0-9])|(3[0-1]))([0-9]){3}([0-9]|X)&;"number.txt
210905197807210546
370205197405213513
372922198012224773
370722197812222517
230803197906010035
152801198703025310
511428196305026357
[root@CentOS7~]#


10.正则表达式表示手机号

[root@CentOS7~]#grep-E-o"(+86)?1[38][0-9]{9}|14[57][0-9]{8}|15[0-35-9][0-9]{8}|17[0678][0-9]{8}"iphone.txt
+8613868233891
15003107238
[root@CentOS7~]#


11.正则表达式表示邮箱

[root@CentOS7~]#egrep"&;([[:alnum:]]+(-|_)*[[:alnum:]]*)&;@([[:alnum:]]+.)+[[:alnum:]]+"mail.txt
993667135@qq.com
servername@163.com
[root@CentOS7~]#


12.正则表达式表示QQ号

[root@CentOS7~]#grep-E-o'b[1-9][0-9]{4,12}b'qq.txt
333449
521521
796898
765423
93796117258
[root@CentOS7~]#

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读