grep——Linux搜索神器

grep命令来搜索文本。通过在给定文件(目录)中搜索包含与给定字符串或单词匹配的行。

“grep”一词,来源于ed(文本编辑器)下的一个命令,名称来自于g/re/p(globally search a regular expression and print,以正则表达式进行全局查找以及打印)。在ed下,输入g/re/p这个命令后,会将所有符合先定义样式的字符串,以行为单位打印出来。
Linux 中的grep命令语法

grep 'word' 文件名–搜索文件名中包的任何word
grep -i 'bar' 文件名 –不区分大小写的搜索“ bar”一词
grep -R 'foo' . – 当前目录及其所有子目录中的所有文件中搜索单词“ foo”
grep -c 'hello' readme.md – 搜索并显示字符串“ hello”出现在名为readme.md的文件中的总次数。

在Linux上使用grep搜索文件

在/ etc / passwd文件中搜索xxx用户,输入:

grep xxx /etc/passwd

可以强制使用-i 参数忽略单词大小写:

grep -i "xxx" /etc/passwd

在这里插入图片描述

使用grep递归搜索文件

递归搜索文件,即在每个目录下的所有文件中搜索字符串“ 127.0.0.1”

sudo grep -r "127.0.0.1" /etc/

如果搜索到相关记录,那么在每一行都能看到结果。

(例如/etc/hosts:127.0.0.1localhost)。可以使用-h option以下方法禁止在输出数据中包含文件名:

grep -h -R "127.0.0.1" /etc/

在这里插入图片描述

使用grep仅搜索单词

当搜索某个词(比如:word)时,grep将匹配所有含有word的单词。您可以强制grep命令仅选择包含组成整个单词的匹配项的行,即仅完全匹配单词word:

grep -w "word" file

在这里插入图片描述

使用grep搜索2个不同的单词

egrep -w 'word1|word2' /path/to/file

单词匹配后如何计算行数

grep可以使用-c(count)选项计算有多少个匹配项:

grep -c 'word' /path/to/file

在这里插入图片描述
使用-n参数显示行号:

grep -n 'root' /etc/passwd

强制grep反转匹配

使用-v 参数 打印反转匹配;也就是说,仅匹配不包含给定单词的那些行。例如,打印不包含bar的所有行:

grep -v bar /path/to/file

Linux管道和grep命令

grep命令通常与shell管道命令(|)一起使用。在此示例中,显示硬盘设备的名称:

`dmesg | egrep '(s|h)d[a-z]'`

在这里插入图片描述
显示cpu型号名称:

cat /proc/cpuinfo | grep -i 'Model'

上述显示CPU型号的命令也可以按如下方式使用,这就无需结合管道命令:

grep -i 'Model' /proc/cpuinfo

仅列出匹配文件的名称

使用-l选项可以只列出含有匹配字符所在的文件夹名,而不用显示具体行。

比如下面的例子就是显示哪些C语言文件里面含有main的文件名:

grep -l 'main' *.c

Linux中的grep命令参数总结
在这里插入图片描述

发布了28 篇原创文章 · 获赞 2 · 访问量 3259

猜你喜欢

转载自blog.csdn.net/Maestro_T/article/details/104301458