在本文中,我们将讨论一个linux命令,该命令在Linux中进行搜索非常有用。那就是“ grep”命令。我们可以使用grep搜索文件中的文本模式,另一方面,可以使用find命令在linux OS中搜索文件。除此之外,我们还可以使用grep命令过滤搜索结果以捕获特定的文本字符串、单词或数字。这个命令对于Linux操作系统中的日常任务非常有用。
grep命令可以搜索与给定文本匹配的行,以便在您使用命令提及的给定文件内查找。输出是一组行,每行应具有您使用grep命令键入的特定单词或单词短语。
我们具体往下看
代码语言:javascript复制Syntax –
grep <word> <file name>
grep <word phrase> <file name>
grep <word> <file name1> <file name2> <file name n>
grep <options> <word> <file name>
cat <file name> | grep <word>
重要提示–文件名可以是绝对路径,也可以是相对路径。如果在您所在位置的文件内搜索文本,则可以使用相对路径。但是,如果要在其他位置的文件中搜索文本,则必须使用绝对路径。
要搜索单词短语时,请记住使用“”or“”。
您可以指定上述语法中提到的一个或多个文件名。
带示例的grep命令
1)在/ etc / passwd文件中搜索您的用户名
grep ubuntu / etc / passwd
输出
如语法中所述,我们也可以在以下方法中使用这个grep命令。首先,我们使用cat命令查看文件,然后使用grep输出该关键字。
两种方法都是正确的。
2)在多个文件中搜索关键字
grep ubuntu / etc / passwd / etc / groups
输出
在上图中,你可以看到我们在两个文件中输入了搜索关键字“ubuntu”(我们的用户名)的命令。它们是/ etc / passwd file和/ etc / group file,输出如上所示。我们可以清楚地看到输出具有三个部分,有紫色、白色和红色这三种颜色。
- 紫色:文件名
- 白色:包含我们的关键字(这次是ubuntu)
- 红色:关键字
因此,当我们在多个文件中进行搜索时,通常grep命令会提供类似的输出。我们可以根据需要更改此输出,必须使用选项来做到这一点。
带选项的grep命令
选项1:使用-n获取文件的行号
选项2:使用-h从输出中隐藏文件名
grep ubuntu /etc/passwd /etc/groups
输出
选项3:使用-l仅列出包含我们关键字的文件
实际上,当我们在整个文件系统中搜索关键字时,上面的选项(-l)非常有用。
在简要讨论-l选项之前,我先介绍另一个选项。
选项4:使用-R递归搜索关键字
在上面的示例中,我正在根目录下搜索我的名字osanda。如果我们使用不带选项-R的命令,则将显示以下内容。
重要提示:Grep命令始终在文件而不是目录中搜索关键字。
由于/是根目录,因此我们需要提供-R选项以搜索子目录中的所有文件。
重要提示:2> / dev / null正在执行将输出中的错误发送到垃圾箱的操作。
让我们回到选项3,即-l选项。
如上图所示,我们只能将输出限制为仅查看包含关键字“ osanda”的文件名。
重要提示:您可以将-R或-r都用于递归grep。
选项5:使用-i忽略大小写
在这里,我创建了一个名为“ osa”的小文本文件。它在下面的同一行中包含两个单词。
参见下面的-i选项如何工作
3)在文件中搜索词组
选项6:使用-c计数文件中的结果数
上面的示例计算了/ var / log / syslog文件中有错误的行数。
选项7:使用-w搜索确切的关键字
认为您正在搜索一个名为boo的单词。猜猜我们有一个名为example.txt的文件。在该文件内部,它的行与boo完全相同。有些行可能包含fooboo,fooboob,booboo,blackboo。因此,如果将grep命令键入为noramlly(grep boo example.txt),我们将在输出中获得所有这些行,但是我们不需要它们,我们只需要仅包含boo的行。因此,命令应如下所示。
grep -w boo example.txt
如何在单个文件中搜索两个单词
grep -w'word1 | word2'example.txt
选项8:使用-v选项可忽略搜索结果中的关键字
在上面的示例中,我从输出中忽略了关键字“ ubuntu”。因此,除了ubuntu之外,它还会列出/ etc / passwd文件中的行。
下面会给出一些如何使用grep的示例
选项9:在使用–exclude-dir搜索时忽略一个目录
猜猜我们需要忽略要搜索的目录。您需要使用提及的选项提及目录名称。例如– grep -Ri“ index.html” –exclude-dir博客这里的博客是我们搜索时需要跳过的目录。
重要提示–我们不仅可以使用grep命令搜索文件中的字符串模式,还可以从不同的命令输出中过滤特定的字符串模式。
1)显示所有磁盘详细信息
2)检查syslog文件中的错误
3)从包列表结果中获取mysql-server包
4)检查正在运行的特定服务的进程
猜猜您需要检查已迁移的进程是否正在运行。无论您需要检查什么服务。通常,我们使用ps aux命令来检查进程,它输出当前正在运行的所有进程。但是我们只需要检查内存缓存进程。我们可以在管道中使用grep命令,如下所示。
ps aux | grep memcached
考虑一下是否需要找到为memcached服务分配端口。然后您应该尝试如下
netstat -plunt | grep memcached
最后,送给大家一句话,多读书、多实践!
——The End——