Linux grep/egrep命令详解

什么是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:

[email protected]:~$ sudo apt-get install grep

在安装过程中出现y/n选项提示时输入y。 之后,grep实用程序将安装在您的系统上。

您可以通过以下命令检查grep版本来验证安装:

[email protected]:~$ grep --version

将grep命令与示例一起使用

grep命令可以通过介绍可以使用它的一些场景来得到最好的解释。 这里有一些例子:

搜索文件

如果要搜索包含特定关键字的文件名,可以通过grep命令过滤文件列表,如下所示:

句法:

$ ls -l | grep -i “searchword”

例子:

[email protected]:~$ ls -l | grep -i linuxidc

此命令将列出当前目录中包含单词“linuxidc”的文件名的所有文件。

在文件中搜索字符串

您可以通过grep命令从包含特定文本字符串的文件中获取一个句子。

句法:

grep “string” filename

例:

[email protected]:~$ grep ‘Ubuntu‘ linuxidc.txt

我的示例文件linuxidc.txt包含具有字符串“Ubuntu”的句子,您可以在上面的输出中看到该句子。 关键字和字符串在搜索结果中以彩色形式显示。

在多个文件中搜索字符串

如果您想从同一类型的所有文件中搜索包含您的文本字符串的句子,grep命令随时为您服务。

语法1:

$ grep “string” filenameKeyword*

语法 2:

$ grep “string” *.extension

例子1:

[email protected]:~$ grep ‘Ubuntu‘ linuxidc*

此命令将从包含关键字“linuxidc”的文件名的所有文件中获取包含字符串“Ubuntu”的所有句子。

例2:

[email protected]:~$ grep ‘Ubuntu‘ *.txt

此命令将从所有扩展名为.txt的文件中获取包含字符串“Ubuntu”的所有句子。

在不考虑字符串的情况下搜索文件中的字符串

在上面的示例中,我的文本字符串幸运地与我的示例文本文件中的文本字符串相同。 如果我输入了以下命令,我的搜索结果将为nil,因为我的文件中的文本不是以大写单词“Sample”开头的

grep "Sample file" *.txt

让我们告诉grep忽略搜索字符串的情况,并通过-i选项根据字符串打印搜索结果。

语法:

$ grep -i “string” filename

例子:

[email protected]:~$ grep -i ‘ubuntu‘ *.txt

此命令将从所有扩展名为.txt的文件中获取包含字符串“Ubuntu”的所有句子。 这不会考虑搜索字符串是大写还是小写。

在正则表达式的基础上搜索

通过grep命令,可以指定带有start和end关键字的正则表达式。 输出将是包含指定的起始和结束关键字之间的整个表达式的句子。 此功能非常强大,因为您无需在搜索命令中编写整个表达式。

句法:

$ grep “startingKeyword.*endingKeyword” filename

例子:

[email protected]:~$ grep ‘Linux.*.Fedora‘ linuxidc.com.txt

此命令将从我在grep命令中指定的文件中打印包含表达式的句子(从我的startingKeyword开始,到我的endingKeyword结尾)。

在搜索字符串之后/之前显示指定的行数

您可以使用grep命令在文件中的搜索字符串之前/之后打印N行。 搜索结果还包括包含搜索字符串的文本行。

密钥字符串后面N行的语法:

$ grep -A <N> ‘string‘ filename

例子:

[email protected]:~$ grep -A 3 -i ‘专业的Linux系统门户网站‘  linuxidc.com.txt

这是我的示例文本文件的样子:

这就是命令输出的样子:

它从我在grep命令中指定的文件中显示3行,包括包含搜索字符串的行。

密钥字符串前N行的语法:

$ grep -B <N> ‘string‘ filename

您还可以在文本字符串周围搜索N行。 这意味着在文本字符串之前的N行和在文本字符串之后的N.

原文地址:https://www.cnblogs.com/sucretan2010/p/11330304.html

时间: 2024-11-06 23:03:59

Linux grep/egrep命令详解的相关文章

linux下alias命令详解

linux下alias命令详解 用途说明 设置命令的别名.在linux系统中如果命令太长又不符合用户的习惯,那么我们可以为它指定一个别名.虽然可以为命令建立"链接" 解决长文件名的问题,但对于带命令行参数的命令,链接就无能为力了.而指定别名则可以解决此类所有问题[1].常用别名来简化 ssh登录[见示例三],使长命令变短,使常用的长命令行变短,强制执行命令时询问等. 功能说明 :设置指令的别名. 语 法:alias[别名]=[指令名称] 参 数 : 若不加任何参数,则列出目前所有的别名

(转)Linux下PS命令详解

(转)Linux下PS命令详解 整理自:http://blog.chinaunix.net/space.php?uid=20564848&do=blog&id=74654 要对系统中进程进行监测控制,查看状态,内存,CPU的使用情况,使用命令:/bin/ps (1) ps :是显示瞬间进程的状态,并不动态连续: (2) top:如果想对进程运行时间监控,应该用 top 命令: (3) kill 用于杀死进程或者给进程发送信号: (4) 查看文章最后的man手册,可以查看ps的每项输出的含义

linux中ls命令详解

s 命令可以说是linux下最常用的命令之一. -a 列出目录下的所有文件,包括以 . 开头的隐含文件.-b 把文件名中不可输出的字符用反斜杠加字符编号(就象在C语言里一样)的形式列出.-c 输出文件的 i 节点的修改时间,并以此排序.-d 将目录象文件一样显示,而不是显示其下的文件.-e 输出时间的全部信息,而不是输出简略信息.-f -U 对输出的文件不排序.-g 无用.-i 输出文件的 i 节点的索引信息.-k 以 k 字节的形式表示文件的大小.-l 列出文件的详细信息.-m 横向输出文件名

Linux下ps命令详解 Linux下ps命令的详细使用方法

Linux下ps命令详解 1. 运行(正在运行或在运行队列中等待) 2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号) 3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)ps工具标识进程的5种状态码:D 不可中断 uninterruptible sleep (usuall

Linux之htop命令详解

Linux之htop命令详解 一.htop简介 htop 是Linux系统中的一个互动的进程查看器,一个文本模式的应用程序(在控制台或者X终端中),需要ncurses. 与Linux传统的top相比,htop更加人性化.它可让用户交互式操作,支持颜色主题,可横向或纵向滚动浏览进程列表,并支持鼠标操作. 与top相比,htop有以下优点: 可以横向或纵向滚动浏览进程列表,以便看到所有的进程和完整的命令行. 在启动上,比top 更快. 杀进程时不需要输入进程号. htop 支持鼠标操作. htop

Linux系统进程管理命令详解

Linux管理进程的最好方法就是使用命令行下的系统命令.Linux下面的进程涉及的命令有at, bg, fg, kill, crontab, jobs, ps, pstree, top, nice, renice, sleep, nohup. 1.at命令:定时运行命令 作用:at命令在指定时刻执行指定的命令序列. 格式: at [-V] [-q x] [-f file] [-m] time atq [-V] [-q x] atrm [-V] [-q x] job- batch [-V] [-f

linux主要shell命令详解

Linux主要shell命令详解 shell是用户和Linux操作系统之间的接口.Linux中有多种shell,其中缺省使用的是Bash.本章讲述了shell的工作原理,shell的种类,shell的一般操作及Bash的特性. 什么是shell Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的接口.它是命令语言.命令解释程序及程序设计语言的统称. shell是用户和Linux内核之间的接口程序,如果把Linux内核想象成一个球体的中心,shell就是围绕内核的外层.当从sh

Linux下chkconfig命令详解

Linux下chkconfig命令详解 chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接. 使用语法:chkconfig [--add][--del][--list][系统服务] 或 chkconfig [--level <等级代号>][系统服务][on/off/reset] chkconfig在没有参数运行时,显示用法.如果加上服务名,那么就检查这个服务是否在当前运行级启动.如果是,返

转载的 Linux下chkconfig命令详解

Linux下chkconfig命令详解 chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接. 使用语法: chkconfig [--add][--del][--list][系统服务] 或 chkconfig [--level <等级代号>][系统服务][on/off/reset] chkconfig 在没有参数运行时,显示用法.如果加上服务名,那么就检查这个服务是否在当前运行级启动.如果是