shell--grep和正则表达式

什么是正则表达式

  • Linux Shell 以一串字符作为表达式向系统传达意思,元字符是用来阐释字符表达意义的字符,简单来说,元字符就是描述字符的字符,它用于对字符表达式的内容,转换以及各种操作信息进行描述,正则表达式是由一串字符和元字符构成的字符串,正则表达式的主要功能是文本查询和字符串操作,它可以匹配文本的一个字符或字符集合。

grep正则表达式

^         如:^zhang,表示匹配所有以zhang开头的行。
$         如:zhang$,表示匹配所有以zhang结尾的行。
.         匹配一个除换行符之外的字符,如:zha.g,匹配zha后接一个任意字符除换行符之外,然后是g。
*         匹配零个或多个先前字符,如:*zhang,匹配所有一个或多个字符后面紧跟grep的行。
.*        匹配任意一个字符出现零次或多次,结合在一起通常表示任意字符
[]        匹配一个指定范围内的字符,如:[zh]ang,匹配zang和hang。
[^]       匹配一个指定范围内的字符,如:[^A-DG-Z],匹配不包含A-D和G-Z字母开头的行        
\(..\)    标记匹配字符,如'\(love\)',love被标记为1。 
\<        锚定单词的开始,如:'\<grep'匹配包含以grep开头的单词的行。    
\>        锚定单词的结束,如'grep\>'匹配包含以grep结尾的单词的行。    
\<...\>   匹配只包含括号里面的单词的行,如匹配\<zhangjunchao\>,zhangjunchao110这种不匹配。
x\{m\}    重复字符x,m次,如:'o\{5\}'匹配包含5个o的行。    
x\{m,\}   重复字符x,至少m次,如:'o\{5,\}'匹配至少有5个o的行。    
x\{m,n\}  重复字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配5--10个o的行。   
\w        匹配文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。   
\W        \w的反置形式,匹配一个或多个非单词字符,如点号句号等。   
\b        单词锁定符,如: '\bgrep\b'只匹配grep。  

grep语法格式:

grep 选项 参数 文件
Usage: grep [OPTION]... PATTERN [FILE]...

常用命令参数

-a  不要忽略二进制数据。
-A  <显示列数> 除了显示符合范本样式的那一行之外,并显示该行之后的内容
-b  在显示符合范本样式的那一行之外,并显示该行之前的内容
-c  计算符合范本样式的列数
-C <显示列数>或-<显示列数>  除了显示符合范本样式的那一列之外,并显示该列之前后的内容。
-d <进行动作> 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作
-e <范本样式> 匹配多个样式
-E 将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式
-f <范本文件> 指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式
-F 将范本样式视为固定字符串的列表
-G 将范本样式视为普通的表示法来使用
-h 在显示符合范本样式的那一列之前,不标示该列所属的文件名称
-H 在显示符合范本样式的那一列之前,标示该列的文件名称
-i 忽略字符大小写
-l 列出文件内容符合指定的范本样式的文件名称
-L 列出文件内容不符合指定的范本样式的文件名称
-n 在显示符合范本样式的那一列之前,标示出该列的编号
-q 不显示任何信息
-R/-r 递归查询
-s 不显示错误信息
-v 反转查找
-w 正则匹配只包含完全字符的内容,如roo只匹配roo,不匹配root,roott等
-x 只显示全列符合的列
-y 此参数效果跟“-i”相同
-o 只输出文件中匹配到的部分

示例

1. 搜索全文中的root

在这里插入图片描述

2.-c查看全文root有几行

在这里插入图片描述

3.-n 显示所有匹配的行 并显示行号

在这里插入图片描述

4. -v -c 除了root所在行所有行的行数

在这里插入图片描述
-v 除了root所在行的所有行
在这里插入图片描述

5. -i 不区分大小写
cp /etc/passwd .
vim passwd

加一行
在这里插入图片描述在这里插入图片描述

6. grep + 正则表达式

在这里插入图片描述

7. 不显示错误信息

不会报错
在这里插入图片描述

8. -r表示递归

在这里插入图片描述

9.-w 匹配整句 元字符不再被认定为特定的含义

在这里插入图片描述

10.-x匹配整行,只有文件中有某一整行的内容能匹配上时,grep才会输出该行的内容

在这里插入图片描述

11.-q表示以退出状态表示搜索成功与否
  • 0:yes
  • 1:no

在这里插入图片描述

正则表达式和grep结合的例子

1.查找空白行并且只打印行数

在这里插入图片描述

2.并非查找空白行并且只打印行数 (能匹配开头就不是空行)

在这里插入图片描述

3.[Rr]oot不区分大小写

在这里插入图片描述

4.匹配前3个字母任意,最后一个字母是t

在这里插入图片描述

练习

1.显示 /proc/meminfo 中以大小s开头的行

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值