当前位置: 首页 > 新闻动态 > 技术教程

Linux 三剑客之grep

作者:星夢妙者 浏览: 发布日期:2025-07-17
[导读]:目录Linux三剑客之grep与find命令的搭配使用:三剑客之grep:正则表达式:搭配命令-find格式:find[搜索范围][参数]参数:-name:依据文件名查找文件-iname:依据文件名查找文件(忽略大小写)-size:依据文件大小查找文件(与size搭配使用符号:+表示大于,-表示小于,无符号表示等于)-mtime:依据修改时间查找文件-atime:依据访问时间查找文件-ctime:依据属性修改时间查找文件-user:依据文件所有者查找文件-group:依据文件所属组查找文件-ex

目录

Linux 三剑客之grep与find命令的搭配使用:

三剑客之grep:

正则表达式:

搭配命令-find 格式:find [搜索范围] [参数]

参数:

-name: 依据文件名查找文件

-iname:依据文件名查找文件(忽略大小写)

-size:依据文件大小查找文件(与size搭配使用符号:+表示大于,-表示小于,无符号表示等于)

-mtime:依据修改时间查找文件

-atime:依据访问时间查找文件

-ctime:依据属性修改时间查找文件

-user:依据文件所有者查找文件

-group:依据文件所属组查找文件

-exec:将find处理的结果传递给其他命令继续处理。

代码示例:

dd if=/dev/zero of=100.txt bs=10M count=10

dd:生成文件

if:从哪里读取

of:写入到哪个文件

bs:每次写入多少内容

count:写入多少次

案例1:在/etc目录下查找名为hosts的文件

[root@localhost ~]# find /etc/ -name 'hosts'
/etc/hosts

案例2:在/etc目录下查找名称包含hosts的文件

[root@localhost ~]# find /etc/ -name '*hosts*'

案例3:将/etc目录下的所有普通文件打包压缩到/tmp目录

[root@localhost /tmp]# tar -czPf /tmp/etcv2.tar.gz `find /etc/ -type f | xargs`

知识补充:``:表示先执行命令,然后将结果传递给其他命令处理

三剑客之grep:

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

参数:

参数字符 功能描述
-n 过滤文本时,显示匹配行的行号
-c 只显示匹配成功的行数
-o 只显示匹配成功的内容
-v 反向过滤(类似-o的取反操作)
-q 静默输出(不显示,通过echo $?查看结果真假)
-i 忽略大小写
-l 匹配成功后,显示文件名
-R/-r 递归匹配
-E 使用扩展正则表达式,相当于egrep
-A 显示匹配行及之后的内容
-B 显示匹配行及之前的内容
-C或- 显示匹配行及前后内容

知识扩展:

$?:上一行命令执行的结果,0表示成功,其他数字表示失败。
wc:统计行数
-l:打印匹配行数
-c:打印匹配的字节数

在/etc目录下,有多少个文件包含root。 grep -rl 'root' /etc/ | wc -l

正则表达式:

在Linux中,正则表达式分为普通正则表达式和扩展正则表达式。

普通正则表达式:

^:以某字符开头
$:以某字符结尾
.:匹配除换行符之外的任意单个字符
*:匹配前导字符的任意个数
[]:匹配某组字符串中的任意一个字符
[^]:取反
[a-z]:匹配小写字母
[A-Z]:匹配大写字母
[a-zA-Z]:匹配字母
[0-9]:匹配数字
\:取消转义
():分组
\n:代表第n个分组

扩展正则表达式:

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

案例如下:

案例1:在/etc/passwd文件中,匹配以ftp开头的行
grep '^ftp' /etc/passwd

案例2:在/etc/passwd文件中,匹配以bash结尾的行 grep 'bash$' /etc/passwd

案例3:匹配本机中的IP地址 ip a | grep -oE "[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}" 或 ip a | grep -oE '([0-9]{1,3}.){3}[0-9]{1,3}'

案例4:从/etc/fstab文件中去掉以#开头且#后至少有一个空格的行 grep -vE '^#\ +' /etc/fstab

案例5:找出文件中至少有一个空格的行 grep -E '\ +' xxx

案例6:从nginx.conf文件中删除以#开头的行和空行 grep -vE '^\ *#|^$' /etc/nginx/nginx.conf

免责声明:转载请注明出处:http://shjed.com/news/108777.html

扫一扫高效沟通

多一份参考总有益处

免费领取网站策划SEO优化策划方案

请填写下方表单,我们会尽快与您联系
感谢您的咨询,我们会尽快给您回复!