grep:文本过滤器

原文出处:https://www.cnblogs.com/My-IronMan/p/15713535.html

一:grep语法格式:

grep [参数] [匹配规则] [操作对象]

二:参数:

-n :过滤文本时,将过滤出来的内容在文件内的行号显示出来
-A :匹配成功后,将匹配行的后n行显示出来
-B :匹配成功后,将匹配行的前n行显示出来
-C :匹配成功后,将匹配行的前后各n行都显示出来
-c :只显示匹配成功的行
-o :只显示匹配成功的内容
-v :反向过滤(小v)
-q :静默输出
-i :忽略大小写
-R :递归匹配

-r :递归匹配
-E :使用扩展正则,等价于egrep
l :只显示文件名

 三:正则表达式

1.正则表达式的分类(grep)
    1.普通正则表达式
    2.扩展正则表达式

2.普通正则表达式

^ :已某字符开头
$ :已某字符结尾
. :匹配除换行符之外的任意单个字符
* :匹配前导字符的零次或者多次
[] :某组字符串的任意一个字符
[^] :取反
[a-z] : 匹配小写字母
[A-Z] :匹配大写字母
[a-z[A-Z]: 匹配字母
[0-9] :匹配数字
\ :转义富符
() :分组

3.扩展正则

{} :匹配的次数
{n} :匹配n次
{n,} :至少匹配n次
{n,m} :匹配n到m次
{,m} :最多匹配m次
+ :匹配至少一个或多次前导字符
? :匹配一个或者零个前导字符
| :或

 四:正则与grep实战案例实战:

1,在/etc/passwd文件中,匹配以ftb开头的行

grep '^ftp' /etc/passwd
^    : 以ftp开头

2,在/etc/passwd文件中,匹配以bash结尾的行

grep 'bash$' /etc/passwd
$    :以bash结尾

3,匹配本机中有哪些ip

ip:
    192.168.15.100
正则匹配ip
ip a | grep -oE '([0-9]{1,3}\.){3}[0-9]{1,3}'
|    : 管道符,前面一个命令的结果交给后面一个命令处理
o    : 只显示匹配成功的内容
E    : 使用扩展正则
()    : 组合
[0-9]    : 0到9任意数字
{1,3}    : 最少一个,最多3个
\    : 取消转义
\.    : 取消转义 让.失去原有的功能
{3}    : 匹配三次
[0-9]    : 0-9任意数字
{1,3}    : 最少一个,最多3个 结尾位数

4,要求将/etc/fstab中的去掉包含 # 开头的行, 且要求 # 后至少有一个空格

grep -vE '^#\ +' /etc/fstab
-v    : 反向过滤 取反
-E    : 使用扩展正则
'^#\ +'    : 以#号开头的行,空格取消转义后面至少有一个空格或多个
\    : 取消转义
+    : 至少匹配一个或多个

5,找出文件中至少有一个空格的行

grep -E '\ +' xxx
-E    :扩展正则
\     : 取消转义空格
+    : 空格至少匹配一个空格或多个空格

6,将 nginx.conf 文件中以 # 开头的行和空格,全部删除

grep -vE '^\ *#|^$' /etc/nginx/nginx.conf
-v    :取反
-E    :扩展正则
'^\ *#'    : 以取反空格的零个多个空格结尾的#
|^$    : 或开头到结尾

 

 
posted @ 2023-02-17 14:36  LaniLai  阅读(437)  评论(0编辑  收藏  举报