2016年8月6日作业练习

练习:

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

[root@localhost ~]# grep -i "^[sS]" /proc/meminfo
SwapCached:            0 kB
SwapTotal:       2098172 kB
SwapFree:        2098172 kB
Shmem:              6916 kB
Slab:             179376 kB
SReclaimable:     138252 kB
SUnreclaim:        41124 kB

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

grep -v "/bin/bash$" /etc/passwd 
    #-v 显示除了匹配到的行
    #"/bin/bash$ 将$前面的字符串锚定到行尾

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

[root@localhost ~]# grep  "^rpc" /etc/passwd
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
#显示过滤到的结果不正确。用户rpc,rpc是一个单词

#应该锚定单词
[root@localhost ~]# grep  "^\<rpc\>" /etc/passwd | cut -d: -f1,7
rpc:/sbin/nologin

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

grep "[[:digit:]][[:digit:]][[:digit:]]\?" /etc/passwd
以下为部分内容
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin

其中nfsnobody:x:65534:65534:##也被匹配到了
匹配到的原因是655、553、534.都是符合条件的。所以整个66534就都被匹配到了。
应该改为锚定单词,将两位数或三位数当成一个单词来处理。

应该如下写法
grep "\<[[:digit:]][[:digit:]][[:digit:]]\?\>" /etc/passwd

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

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

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

[root@localhost ~]# netstat -tan | grep "LISTEN[[:space:]]*$"
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

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

[root@localhost ~]# 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:1001:1001::/home/bash:/bin/bash
nologin:x:1004:1004::/home/nologin:/sbin/nologin

练习-用扩展正则表达式

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

[root@localhost ~]# egrep "^root|^wang|^mage" /etc/passwd
root:x:0:0:root:/root:/bin/bash
mageedu:x:1000:1000:mageedu:/home/mageedu:/bin/bash
wang:x:1005:1005::/home/wang:/bin/bash

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

[root@localhost ~]# grep "^[^([:space:]].*(" /etc/rc.d/init.d/functions 
[root@localhost ~]# egrep "^[^\([:space:]].*\(" /etc/rc.d/init.d/functions

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

[root@localhost ~]# echo "/etc/rc.d/init.d/functions" |egrep -o "[^/]*/?$"
functions
[root@localhost ~]#

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

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

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

[root@localhost ~]# last | egrep "[[:digit:]]*\.[[:digit:]]*\.[[:digit:]]*\.[[:digit:]]*" | tr -s " " | sort -t" " -k3 -n |cut -d " " -f3 | uniq -c
  5 192.168.226.1

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

[0-9]
[1-9]?[0-9]
2[0-4]?[0-9]
25[0-5]

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

常用ip地址是ABC类,地址范围1.0.0.0-223.255.255.255
[root@localhost ~]# ifconfig |tr -s " " |egrep -o "^.*inet[[:space:]][[:digit:]]*\.[[:digit:]]*\.[[:digit:]]*\.[[:digit:]]*"| cut -d" " -f3
192.168.226.129
127.0.0.1

课后作业:

1、取本机ip地址

[root@localhost ~]# ifconfig |tr -s " " |egrep "broadcast" | cut -d" " -f3

192.168.226.129

2、取各分区利用率的数值

[root@localhost ~]# df | grep "^.*sda.*[[:digit:]]\+%"| tr -s " " |cut -d" " -f5,6
1% /
13% /usr
29% /boot

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

[root@localhost ~]# cat /etc/init.d/functions | tr  -c "^[:alpha:]" "\n" | sort | uniq -c | sort -nr

5、/etc/rc.d/init.d/functions或/etc/rc.d/init.d/functions/" 取目录名

[root@localhost ~]# vim lujing.sh 
#!/bin/bash
#取路径中除基名以外的路径

echo "/etc/rc.d/functions"                           #显示完整路径
fullpath="/etc/rc.d/functions"                       #定义完整路径变量
bcnum=`echo $fullpath |egrep  -o "[^/]+/?$" | wc -c` #计算基名字数
fullnum=`echo $fullpath | wc -c`                     #计算完整路径字数
pathcount="$[$fullnum-$bcnum]"                      #计算后的路径字数也可以用bc计算
echo $fullpath|cut -c1-$pathcount                  #cut出路径

[root@localhost ~]# bash lujing.sh 
/etc/rc.d/functions
/etc/rc.d/
[root@localhost ~]#

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

(0)
yywyyw
上一篇 2016-08-07 22:06
下一篇 2016-08-07 22:06

相关推荐

  • 初识linux:计算机的组成及功能

    一、描述计算机的组成及功能。 由冯诺伊曼提出计算机体系结构(5大部件)控制器(Controller):是整个计算机的中枢神经,其功能是对程序规定的控制信息进行解释,根据其要求进行控制,调度程序、数据、地址,协调计算机各部分工作及内存与外设的访问等。运算器(Datapath):运算器的功能是对数据进行各种算术运算和逻辑运算,即对数据进行加工处理。 (cpu由控…

    2017-12-03
  • bash脚本编程之select语句、函数

    概述     承接上篇,继续介绍一下另一个循环语句select,还有脚本中函数的相关内容,分为三个部分:         1、select语句的介绍和效果演示       &nbs…

    Linux干货 2016-08-21
  • 马哥教育网络20期+第二周练习博客

    1、 Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 ls 使用方式:ls [OPTION]… [DIR]… 常用选项: -a:显示所有档案及目录;  -A:显示除影藏文件“.”和“..”以外的所有文件列表; -C:多列显示输出结果。这是默认选项;  -l:与“-C”选项功能相反,所有输出…

    Linux干货 2016-06-23
  • MAN手册各章节功能及快捷键

    前言: man是manual的简称,中文说法可以是手册。而man手册分为不同的各个章节,每个章节保存这不通类型的手册。 各个章节功能:    Section 名称      说明 1 用户命令 可由任何人启动的 2 系统调用 即由内核提供的函数 3 例程   …

    Linux干货 2016-10-17
  • Linux的软链接和硬链接区别

    在Linux中,为了方便文件的使用,引入了两种链接,即为软链接和硬链接。 那么什么是硬链接,什么又是软链接呢。 简单来说,硬链接就是一个inode号对应多个文件名,也就是说一个文件使用了多个别名。 首先先来看看我们要创建硬连接的文件信息: [root@localhost ~]# ll -i /root &nb…

    Linux干货 2016-10-20
  • 35个强大的UI设计教程

    下面是35个非常不错的UI设计的的教程及效果图,非常不错哦。不但教你如何做一些特效,同样教你如何做UI布局和界面设计。当然,他们风格迥异,也基本上都是Web页面上的。都非常不错。希望你喜欢。(点击下面的图片可以打开相关的教程) Old Paper Layout Professional Modern Web Layout Photography portfo…

    Linux干货 2015-04-01