首页 > 编程笔记 > Linux笔记

Linux grep命令:强大的文本搜索工具

Linux grep 命令来自英文词组 global search regular expression and print out the line 的缩写,意思是用于全面搜索的正则表达式,并将结果输出。

人们通常会将 grep 命令与正则表达式搭配使用,参数作为搜索过程中的补充或对输出结果的筛选,命令模式十分灵‍活。

与之容易混淆的是 egrep 命令和 fgrep 命令。如果把 grep 命令当作标准搜索命令,那么:
Linux grep 命令的语法格式:

grep 参数 文件名


grep 命令常用参数
参数 说明 参数 说明
-b 显示匹配行距文件头部的偏移量 -o 显示匹配词距文件头部的偏移量
-c 只显示匹配的行数 -q 静默执行模式
-E 支持扩展正则表达式 -r 递归搜索模式
-F 匹配固定字符串的内容 -s 不显示没有匹配文本的错误信息
-h 搜索多文件时不显示文件名 -v 显示不包含匹配文本的所有行
-i 忽略关键词大小写 -w 精准匹配整词
-l 只显示符合匹配条件的文件名 -x 精准匹配整行
-n 显示所有匹配行及其行号    

参考示例

1) 搜索指定文件中包含某个关键词的内容行:
[root@54benniao ~]# grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

2) 搜索指定文件中以某个关键词开头的内容行:
[root@54benniao ~]# grep ^root /etc/passwd
root:x:0:0:root:/root:/bin/bash

3) 搜索多个文件中包含某个关键词的内容行:
[root@54benniao ~]# 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@54benniao ~]# 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@54benniao ~]# grep -c root /etc/passwd /etc/shadow
/etc/passwd:2
/etc/shadow:1

6) 搜索指定文件中包含某个关键词位置的行号及内容行:
[root@54benniao ~]# 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.54benniao.com

7) 搜索指定文件中不包含某个关键词的内容行:
[root@54benniao ~]# 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@54benniao ~]# 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@54benniao ~]# grep -sl root *
anaconda-ks.cfg
initial-setup-ks.cfg

声明:《Linux系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。