Linux grep命令

2024-04-29 72

grep命令是Linux系统中一个非常实用的文本搜索工具,它可以帮助我们在大量文件中快速查找包含指定关键词的内容。它支持正则表达式,可以灵活地进行模式匹配。与grep命令类似的还有egrep命令和fgrep命令,它们分别表示扩展的正则表达式搜索和固定字符串搜索。

一、语法格式

grep命令的基本语法格式为:

grep 参数 文件名

二、常用参数

下面是一些常用的参数及其作用:

1、-b:显示匹配行距文件头部的偏移量

2、-o:显示匹配词距文件头部的偏移量

3、-c:只显示匹配的行数

4、-q:静默执行模式

5、-E:支持扩展正则表达式

6、-r:递归搜索模式

7、-F:匹配固定字符串的内容

8、-s:不显示没有匹配文本的错误信息

9、-h:搜索多文件时不显示文件名

10、-v:显示不包含匹配文本的所有行

11、-i:忽略关键词大小写

12、-w:精准匹配整词

13、-l:只显示符合匹配条件的文件名

14、-x:精准匹配整行

15、-n:显示所有匹配行及其行号

三、使用示例

下面是一些使用grep命令的示例:

1、搜索指定文件中包含某个关键词的内容行:

[root@zzbaike ~]# grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

2、搜索指定文件中以某个关键词开头的内容行:

[root@zzbaike ~]# grep ^root /etc/passwd 
root:x:0:0:root:/root:/bin/bash

3、搜索多个文件中包含某个关键词的内容行:

[root@zzbaike ~]# grep linuxprobe /etc/passwd /etc/shadow /etc/passwd:linuxprobe:x:1000:1000:linuxprobe:/home/linuxprobe:/bin/bash 
/etc/shadow:linuxprobe:$6$9Av/41hCM17T2PrT$hoggWJ3J/j6IqEOSp62elhdOYPLhQ1qDho7hANcm5fQkPCQdib8KCWGdvxbRvDmqyOarKpWGxd8NAmp3j2Ln00::0:99999:7:::

4、搜索多个文件中包含某个关键词的内容行,不显示文件名称:

[root@zzbaike ~]# grep -h linuxprobe /etc/passwd /etc/shadow linuxprobe:x:1000:1000:linuxprobe:/home/linuxprobe:/bin/bash 
linuxprobe:$6$9Av/41hCM17T2PrT$hoggWJ3J/j6IqEOSp62elhdOYPLhQ1qDho7hANcm5fQkPCQdib8KCWGdvxbRvDmqyOarKpWGxd8NAmp3j2Ln00::0:99999:7:::

5、显示指定文件中包含某个关键词的行数量:

[root@zzbaike ~]# grep -c root /etc/passwd 
/etc/shadow /etc/passwd:2 
/etc/shadow:1

6、搜索指定文件中包含某个关键词位置的行号及内容行:

[root@zzbaike ~]# grep -n network anaconda-ks.cfg 17:network --bootproto=static --device=ens160 --ip=192.168.10.10 --netmask=255.255.255.0 --onboot=off --ipv6=auto --activate 18:network --hostname=www.zzbaike.com

7、搜索指定文件中不包含某个关键词的内容行:

[root@zzbaike ~]# grep -v nologin /etc/passwd 
root:x:0:0:root:/root:/bin/bash 
sync:x:5:0:sync:/sbin:/bin/sync 
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown 
halt:x:7:0:halt:/sbin:/sbin/halt 
linuxprobe:x:1000:1000:linuxprobe:/home/linuxprobe:/bin/bash

8、搜索当前工作目录中包含某个关键词内容的文件,未找到则提示:

[root@zzbaike ~]# grep -l root * 
anaconda-ks.cfg 
grep: Desktop: Is a directory 
grep: Documents: Is a directory 
grep: Downloads: Is a directory 
initial-setup-ks.cfg 
grep: Music: Is a directory 
grep: Pictures: Is a directory 
grep: Public: Is a directory 
grep: Templates: Is a directory 
grep: Videos: Is a directory

9、搜索当前工作目录中包含某个关键词内容的文件,未找到也不提示:

[root@zzbaike ~]# grep -sl root * 
anaconda-ks.cfg 
initial-setup-ks.cfg

10、不仅搜索指定目录,还搜索其内子目录内是否有关键词文件:

[root@zzbaike ~]# grep -srl root /etc 
/etc/fstab 
/etc/X11/xinit/Xclients 
/etc/X11/xinit/xinitrc 
/etc/libreport/events.d/collect_dnf.conf 
/etc/libreport/events.d/bugzilla_anaconda_event.conf 
/etc/libreport/forbidden_words.conf 
………………省略部分输出信息………………

11、搜索指定文件中精准匹配到某个关键词的内容行:

[root@zzbaike ~]# grep -x cd anaconda-ks.cfg 
[root@zzbaike ~]# grep -x cdrom anaconda-ks.cfg 
cdrom

12、判断指定文件中是否包含某个关键词,通过返回状态值输出结果(0为包含,1为不包含):

[root@zzbaike ~]# grep -q linuxprobe anaconda-ks.cfg 
[root@zzbaike ~]# echo $? 
0 
[root@zzbaike ~]# grep -q zzbaike anaconda-ks.cfg 
[root@zzbaike ~]# echo $? 
1

13、搜索指定文件中空行的数量:

[root@zzbaike ~]# grep -c ^$ anaconda-ks.cfg 6
  • 广告合作

  • QQ群号:707632017

温馨提示:
1、本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。邮箱:2942802716#qq.com(#改为@)。 2、本站原创内容未经允许不得转裁,转载请注明出处“站长百科”和原文地址。
Linux grep命令
上一篇: Linux echo命令
Linux grep命令
下一篇: Linux tail命令