8.6正则表达式grep及其他文本处理命令练习

正则表达式grep及其他文本处理命令练习

上课练习 1

1、centos 6找出ifconfig命令结果中本机的IPv4地址

[root@qzx ~]# ifconfig|head -n 2|tail -n 1|tr -s ' [:alpha:]' ':'|cut -d: -f2
10.1.253.75

2、查出分区空间使用率的最大百分比值

[root@qzx ~]# df | tr -s ' ' '%'|cut -d % -f 5|sort -n |tail -1
52

3、查出用户UID最大值的用户名、UID及shell类型

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

4、出/tmp的权限,以数字方式显示

[root@qzx ~]# stat /tmp
  File: `/tmp'
  Size: 4096          Blocks: 8          IO Block: 4096   directory
Device: 803h/2051d    Inode: 389379      Links: 9
Access: (7777/drwsrwsrwt)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2016-08-05 22:09:27.860003287 +0800
Modify: 2016-08-05 22:09:21.807002986 +0800
Change: 2016-08-05 22:09:21.807002986 +0800
[root@qzx ~]# stat /tmp | tail -n +4|head -n 1 |cut -d / -f1|tr -cd '[0-9]'
7777

5、统计当前连接本机的每个远程主机IP的连接数,并按从大到小排序

[root@qzx ~]# netstat -ant | tr -s " " |cut -d " " -f5|tail -n +3 |sort
:::*
:::*
:::*
:::*
:::*
:::*
0.0.0.0:*
0.0.0.0:*
0.0.0.0:*
0.0.0.0:*
0.0.0.0:*
0.0.0.0:*
10.1.250.28:49373

grep命令上课练习

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

[root@qzx ~]# grep -i '^s' /proc/meminfo 
    SwapCached:            0 kB
    SwapTotal:       4194300 kB
    SwapFree:        4194300 kB
    Shmem:              1288 kB
    Slab:             127444 kB
    SReclaimable:      60952 kB
    SUnreclaim:        66492 kB
[root@qzx ~]# grep '^[sS]' /proc/meminfo 
    SwapCached:            0 kB
    SwapTotal:       4194300 kB
    SwapFree:        4194300 kB
    Shmem:              1288 kB
    Slab:             127408 kB
    SReclaimable:      60952 kB
    SUnreclaim:        66456 kB
[root@qzx ~]# grep -E '^(s|S)' /proc/meminfo 
    SwapCached:            0 kB
    SwapTotal:       4194300 kB
    SwapFree:        4194300 kB
    Shmem:              1288 kB
    Slab:             127420 kB
    SReclaimable:      60956 kB
    SUnreclaim:        66464 kB

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

[root@qzx ~]# grep -v '/bin/bash' /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync

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

[root@qzx ~]# grep '^rpc\>' /etc/passwd
rpc:x:32:32:Rpcbind Daemon:/var/cache/rpcbind:/sbin/nologin

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

[root@qzx ~]# grep '\<[[:digit:]]\{2,3\}\>' /etc/passwd
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

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

[root@localhost ~]#  grep '^[[:space:]]\+[^[:space:]]' /etc/grub2.cfg 
  load_env
   set default="${next_entry}"
   set next_entry=

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

[root@localhost ~]# netstat -tan| grep '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

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

[root@qzx ~]# grep  '\(^[[:alnum:]]\+\>\).*\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:4329:4330::/home/bash:/bin/bash
nologin:x:4332:4333::/home/nologin:/sbin/nologin

egrep上课练习

1、显示三个用户root、mage、wang的UID和默认shell

[root@qzx ~]# egrep '^(root)|(mage)|(wang)' /etc/passwd |cut -d : -f3,7
0:/bin/bash
4333:/bin/bash
4334:/bin/bash

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

[root@qzx ~]# egrep '[[:alpha:]_]+\(\)' /etc/rc.d/init.d/functions 
fstab_decode_str() {
checkpid() {
__readlink() {
__fgrep() {
__kill_pids_term_kill_

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

[root@qzx ~]# echo /etc/rc.d/init.d/functions | egrep -o '[^/]+/?$'
functions

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

[root@qzx ~]#  echo "/etc/re.d/init.d/functions" | egrep -o "/.+/"
/etc/re.d/init.d/

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

[root@qzx ~]# last |egrep '^root.*[[:digit:]\.]{3}[[:digit:]]'|tr -s ' '|cut -d " " -f 3|sort |uniq -c
     11 10.1.250.28
      1 172.18.18.245
      2 172.18.19.122

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

'[0-9]'
[1-9][0-9]
1[0-9]{2}
2[0-4][0-9]
25[0-5]

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

[root@qzx ~]# ifconfig | egrep -o '([0-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])\.([0-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])'10.1.253.75
10.1.255.255
255.255.0.0
127.0.0.1
255.0.0.0

课下思考题

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

[root@qzx ~]# cat /etc/init.d/functions |tr -cs '[:alpha:]' '\n' |sort|uniq -c|sort -n.
.
.
 73 echo
 75 pid
 77 then
 83 if

正则表达式表示身份证号

egrep -o '([[:digit:]]{17}X)|([[:digit:]]{18})'

测试:

[root@qzx ~]# echo 12345678912345678X |egrep -o '([[:digit:]]{17}X)|([[:digit:]]{18})'
12345678912345678X
[root@qzx ~]# echo 123456789123456780 |egrep -o '([[:digit:]]{17}X)|([[:digit:]]{18})'
123456789123456780

正则表达式表示手机号

1[3,5][0-9]{9}
18[1,2,3,6,7,8,9][0-9]{8}

[root@qzx ~]# echo 18888397111.232565 |egrep -o '1[3,5][0-9]{9}|18[1,2,3,6,7,8,9][0-9]{8}'18888397111
[root@qzx ~]#

正则表达式表示邮箱

 egrep -o '[[:alnum:]_]+@[[:alnum:]]+\.com\>'

测试

[root@qzx ~]# echo 'sdas a, a.sd . .e.asfafgah_dasAAD12@163.com.asda.sfd .sdsee' |egrep '[[:alnum:]_]+@[[:alnum:]]+\.com\>'
sdas a, a.sd . .e.asfafgah_dasAAD12@163.com.asda.sfd .sdsee
[root@qzx ~]# echo 'sdas a, a.sd . .e.asfafgah_dasAAD12@163.com.asda.sfd .sdsee' |egrep -o '[[:alnum:]_]+@[[:alnum:]]+\.com\>'
asfafgah_dasAAD12@163.com

正则表达式表示QQ号

egrep -o [1-9][0-9]{5,10}

原创文章,作者:qzx,如若转载,请注明出处:http://www.178linux.com/30129

(0)
qzxqzx
上一篇 2016-08-07
下一篇 2016-08-07

相关推荐

  • 新手上路,多多担待,分享linux的ls 常用选项

    ls 命令   ls[OPTION]…[FILE]….选项 和 参数可有可无。 定义:显示指定路径下的文件列表。  -a: 全拼是all,所有的意思,ls  -a能显示出所有的文件,包括隐藏的。点开头和..开头的隐藏文件都能看见。  -l:后跟文件 可以查看文件的大小,和权限(一般用户都有读的权…

    2017-05-21
  • 详解Linux下用户和组的配置文件

    本文将介绍Linux下用户和组的概念及相关配置文件,通过本文,能更好的认识/etc/pssswd ,/etc/group,以及UID、GID的概念,最后将通过修改用户配置文件来实现用户和组的管理工作,对Linux的多任务、多用户有一个更清楚的认识。 一、用户(USER) 在LInux上用户的管理工作是通过修改相关的配置文件来实现的,在日常的工作中主要包含对用…

    Linux干货 2016-10-23
  • M20 – 1- 第二周(2):课堂练习与作业

    课堂练习: 1、显示/var目录下所有以l开头,以一个小写字母结尾,且中间出现至少一位数字的文件和目录 [root@centos6 ~]# ls /var/l*[[:digit:]]*[[:lower:]] ls: cannot access /var/l*[[:digit:]]*[[:lower:…

    Linux干货 2016-08-02
  • Select、Case

    select循环与菜单 select循环主要用于创建菜单,按数字排序list指定的顺序排序,并列出在标准输出,利用PS3列出提示符进行输入选择 用法: select VARIABLE in list  do     循环体命令 done PS3提示语定义: 在脚本中脚本代码的第一…

    Linux干货 2016-08-21
  • 笔记–8.2–用户管理,权限管理

    ·硬链接,软链接区别 大小 链接数 设备,分区 类型 硬连接 一样大,显示的是本身的大小 会增加 不能跨分区 是一个文件,相同inode号,忘了位置可通过inode号找到源文件 软链接 不一样大,链接文件大小是路径的大小 不会增加 可以跨分区,跨设备 两个文件,不同inode号,像发小广告,忘了源连接,文件就找不到了 软链接格式:ln -s +绝对路径或相对…

    Linux干货 2016-08-05
  • Vim编辑工具用法的总结

    描述:    Vim是一款强大的命令行界面的文本编辑器,是vi的高级版本,先说下学习它的原因:  1,所有的UNIX Like 系统都会内置vi文本编辑器,其他的文本编辑器则不一定会存在;  2,很多软件的编辑接口都会主动调用vi  3,vim具有程序编辑的能力,可以主动以字体颜色辨别语法的正确性,方便程序设…

    Linux干货 2016-08-11