grep命令及相关的练习题

Grep及基本正则表达式:正则表达式就是为了处理大量的文本|字符串而定义的一套规则和方法

1.grep常用基本参数及作用:

参数 作用
–color 匹配到的字符串显示颜色
-i 忽略字符大小写
-o 仅显示匹配的字串
-v 反向选取, 即显示不匹配的行
-E 使用扩展正则表达式
-n 显示行号
-w 匹配指定的字符串

2.正则表达式常用:

元数据 意义和范例
^word 搜寻word开头的行
word$ 搜寻word结尾的行
. 匹配任意一个字符
\ 转义字符
* 前面的一个字符重复0到多次
[list] 匹配一系列字符中的一个
[n1-n2] 匹配一个字符范围中的一个字符
[^list] 匹配字符集以外的字符
{n1,n2} 前面的单个字符重复n1,n2次
<word 单词的开头
word> 单词的结尾
‘ ‘ 强引用,引号内的内容不变
“ ” 弱引用,变量会替换
[[:alnum:]] 代表英文大小写字符及数字,即 0-9, A-Z, a-z
[[:alpha:]] 代表任何英文大小写字符,即 A-Z, a-z
[[:space:]] 任何会产生空白的字符,包括空白键, [Tab] 等等
[[:digit:]] 代表数字,即 0-9
[[:lower:]] 代表小写字符,即 a-z
[[:upper:]] 代表大写字符,即 A-Z

3.egrep及扩展正则表达式

grep一般情况下支持基本正则表达式,可以通过参数-E支持扩展正则表达式,另外grep单独提供了一个扩展
命令叫做egrep用来支持扩展正则表达式,这条命令和grep -E等价(grep -E == egrep)
一般情况下,基本正则表达式就够用了
特殊情况下,复杂的扩展表达式,可以简化字符串的匹配
扩展正则表达式就是在基本正则表达式的基础上,增加了一些元数据

元数据 意义和范例
+ 重复前面字符1到多次
匹配god,good,goood等字符串,grep -nE go+d’ file
? 匹配0或1次前面的字符
匹配gd,god,grep -nE ‘go?d’ file
| 或or的方式匹配多个字符串
匹配god或者good,grep -nE’god
() 匹配整个括号内的字符串,原来都是匹配单个字符
搜索good或者glad,grep -nE 'g(oo
* 前面的字符重复0到多次

第一题:

**
Week22.config

“Open Source” is a good mechanism to develop programs.
apple is my favorite food.
Football game is not use feet only.
this dress doesn’t fit me.
However, this dress is about $ 3183 dollars.^M
GNU is free air not free beer.^M
Her hair is very beauty.^M
I can’t finish the test.^M
Oh! The soup taste good.^M
motorcycle is cheap than car.
This window is clear.
the symbol ‘*’ is represented as start.
Oh! My god!
The gd software is a library for drafting programs.^M
You are the best is mean you are the no. 1.
The world is the same with “glad”.
I like dog.
google is the best tools for search keyword.
goooooogle yes!
go! go! Let’s go.
#I am ghost

1. 取得所有 the 字符相关信息及行号
在这里插入图片描述
2. 取得无 the 字符相关信息及行号
在这里插入图片描述
3. 取得 test 或 taste 这两个单字相关信息及行号
在这里插入图片描述
4. 取得所有 oo 字符相关信息及行号
在这里插入图片描述
5. 不想取 oo 前面有 g 的字符相关信息及行号
在这里插入图片描述
6. oo 前面不想要有小写的字符相关信息及行号
在这里插入图片描述
7. 取得 the 只在行首相关信息及行号
在这里插入图片描述
8. 取得有 数字 相关信息及行号
在这里插入图片描述
9. 取得开头是小写 相关信息及行号
在这里插入图片描述
10. 不想要开头是英文字母 相关信息及行号
在这里插入图片描述
11. 取得行尾结束为小数点. 相关信息及行号

12. 取得空白行 相关信息及行号

13. 取得g??d 的字符相关信息及行号
在这里插入图片描述
14. 取得至少两个 o 以上的字符相关信息及行号
在这里插入图片描述
15. 取得开头与结尾都是 g ,两个g 之间仅能存在至少一个 o 相关信息及行号
在这里插入图片描述
16. 取得g 开头与 g 结尾的字符,当中的字符可有可无 相关信息及行号
在这里插入图片描述
17. 取得两个连续 o 的字符相关信息及行号
在这里插入图片描述
在这里插入图片描述
19. 取得g 后面连接2到5个 o,然后再接一个 g 的字符相关信息及行号
在这里插入图片描述

第二题:

#1、显示/proc/meminfo文件中以大小s开头的行(要求:使用两种方法)
在这里插入图片描述
在这里插入图片描述
#2、显示/etc/passwd文件中不以/bin/bash结尾的行
在这里插入图片描述
#3、显示用户alice默认的shell程序
在这里插入图片描述
#4、找出/etc/passwd中的两位或三位数
在这里插入图片描述
#5、显示CentOS7的/etc/grub2.cfg文件中,至少以一个空白字符开头的且后面有非空白字符的行
在这里插入图片描述
#6、找出“netstat -tan”命令结果中以LISTEN后跟任意多个空白字符结尾的行
在这里插入图片描述
#7、显示CentOS7上所有系统用户的用户名和UID

#8、添加用户bash、testbash、basher、sh、nologin(其shell为/sbin/nologin)找出/etc/passwd用户名和shell同名的行
cat /etc/passwd |grep -w “([:]):./\1$”

#9、利用df和grep,取出磁盘各分区利用率,并从大到小排序
df |grep “^/dev/sd”|grep -wo “[0-9]+%”|sort -nr

#10、显示三个用户root、David、alice的UID和默认shell
在这里插入图片描述
#11、找出/etc/rc.d/init.d/functions文件中行首为某单词(包括下划线)后面跟一个小括号的行
在这里插入图片描述
#12、使用egrep取出/etc/rc.d/init.d/functions中其基名
在这里插入图片描述
#13、使用egrep取出上面路径的目录名
在这里插入图片描述
#14、统计last命令中以root登录的每个主机IP地址登录次数

#15、利用扩展正则表达式分别表示0-9、10-99、100-199、200-249、250-255
[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]

#16、显示ifconfig命令结果中所有IPv4地址
在这里插入图片描述
#17、将此字符串:welcome to magedu linux 中的每个字符去重并排序,重复次数多的排到前面
cat test | grep -o “[[:lower:]]”|sort |uniq -c|sort -nr |tr -s ’ ’ | cut -d " " -f 3 |tr -d
‘\n’

#18.找出ifconfig命令结果中的1-255之间的数字
在这里插入图片描述
#步骤拆解
#2 #ifconfig | grep -E “<([1-9]|[1-9][0-9])>” #| 为或
#25 #ifconfig | grep -E ‘<(1[0-9][0-9])>’
#255 要注意规律 #ifconfig | grep -E ‘<(2[0-4][0-9]|25[0-5])>’

猜你喜欢

转载自blog.csdn.net/zt_96123/article/details/83042809