Linux 中 grep 命令的使用
什么是 grep?
我们今天要使用的 grep 实用程序是一个 Unix 工具,与 egrep 和 fgrep 实用程序属于同一家族。这些都是 Unix 工具,旨在对文件和文本执行重复搜索任务。您可以通过 grep 命令指定特定的搜索条件来搜索文件及其内容以获取有用的信息。
所以他们说 GREP 代表全局正则表达式打印,但是这个命令“grep”来自哪里? grep 基本上源自一个名为 ed 的非常简单且古老的 Unix 文本编辑器的特定命令。 ed 命令的运行方式如下:
g/re/p
该命令的目的与我们通过 grep 搜索的意思非常相似。此命令获取文件中与特定文本模式匹配的所有行。
让我们进一步探索 grep 命令。在本文中,我们将解释 grep 实用程序的安装,并提供一些示例,通过这些示例,您可以准确了解如何以及在什么情况下使用它。
我们已在 Ubuntu 18.04 LTS 系统上运行本文中提到的命令和过程。
安装grep
尽管大多数 Linux 系统默认都带有 grep 实用程序,但如果您的系统上没有安装它,则过程如下:
通过 Dash 或 Ctrl+Alt+T 快捷方式打开 Ubuntu 终端。然后以 root 身份输入以下命令,以便通过 apt-get 安装 grep:
sudo apt-get install grep
在安装过程中,当系统提示您输入 y/n 选项时,请输入 y。之后,grep 实用程序将安装在您的系统上。
您可以通过以下命令检查 grep 版本来验证安装:
grep --version
grep 命令的使用和示例
可以通过展示一些可以使用该命令的场景来最好地解释 grep 命令。这里有一些例子:
搜索文件
如果要搜索包含特定关键字的文件名,可以通过 grep 命令过滤文件列表,如下所示:
句法 :
$ls -l | grep -i“搜索词”
例子:
ls -l | grep -i sample
该命令将列出当前目录下所有文件名包含“private”的文件。
在文件中搜索字符串
您可以通过 grep 命令从包含特定文本字符串的文件中获取句子。
句法 :
grep“字符串”文件名
例子 :
grep “sample file” sampleFile.txt
我的示例文件sampleFile.txt 包含具有字符串“sample file”的句子,您可以在上面的输出中看到。关键字和字符串以彩色形式显示在搜索结果中。
在多个文件中搜索字符串
如果您想从所有相同类型的文件中搜索包含您的文本字符串的句子,grep 命令将为您服务。
语法1:
$grep "string" filenameKeyword*
语法2:
$grep "string" *.extension
示例1:
grep "sample file” sample*
该命令将从文件名包含关键字“sample”的所有文件中获取包含字符串“sample file”的所有句子。
示例2:
grep "sample file” *.txt
该命令将从所有扩展名为 .txt 的文件中获取包含字符串“sample file”的所有句子。
在文件中搜索字符串而不考虑字符串的大小写
在上面的示例中,幸运的是,我的文本字符串与示例文本文件中的情况相同。如果我输入以下命令,我的搜索结果将为零,因为我的文件中的文本不是以大写单词“Sample”开头
grep "Sample file" *.txt
让我们告诉 grep 忽略搜索字符串的大小写,并通过 -i 选项根据字符串打印搜索结果。
句法 :
$grep -i "string" 文件名
例子 :
grep -i "Sample file" *.txt
该命令将从所有扩展名为 .txt 的文件中获取包含字符串“sample file”的所有句子。这不会考虑搜索字符串是大写还是小写。
基于正则表达式的搜索
通过 grep 命令,您可以指定带有 start 和 end 关键字的正则表达式。输出将是包含指定的起始关键字和结束关键字之间的整个表达式的句子。此功能非常强大,因为您不需要在搜索命令中编写整个表达式。
句法 :
$grep "startingKeyword.*endingKeyword ” 文件名
例子 :
grep "starting.*.ending" sampleFile.txt
此命令将从我在 grep 命令中指定的文件中打印包含表达式的句子(从开始关键字开始到结束关键字结束)。
在搜索字符串之后/之前显示指定的行数
您可以使用 grep 命令打印文件中搜索字符串之前/之后的 N 行。搜索结果还包括包含搜索字符串的文本行。
键字符串后 N 行的语法:
$grep -A
例子 :
grep -A 3 -i "samplestring" sampleFile.txt
这是我的示例文本文件的样子:
该命令的输出如下所示:
它显示了我在 grep 命令中指定的文件中的 3 行,其中包括包含搜索字符串的行。
键字符串之前 N 行的语法:
$grep -B
您还可以搜索文本字符串“周围”的 N 行。这意味着文本字符串之前有 N 行,之后有 N 行。
围绕键字符串的 N 行语法:
$grep -C
通过本文描述的简单示例,您可以掌握 grep 命令。然后,您可以使用它来搜索可能包含文件或文件内容的过滤结果。这可以节省您在掌握 grep 命令之前浏览整个搜索结果所浪费的大量时间。