Linux中的14个Grep命令示例

类似Linux的操作系统提供了一种称为 grep全局正则表达式打印)。 Linux中的Grep命令用于根据模式从一个或多个文件中搜索行。 模式可以是单个字符,一堆字符,单个单词或句子。

当我们使用指定的模式执行grep命令时,如果它匹配,则它将显示包含该模式的文件行,而无需修改现有文件的内容。

在本教程中,我们将讨论14个有用的grep命令示例,让我们深入研究这些示例。

示例1)搜索文件中的模式或单词

在文件/ etc / passwd文件中搜索“ linuxtechi”一词,运行以下grep命令

[email protected]:~# grep linuxtechi /etc/passwd
linuxtechi:x:1000:1000:linuxtechi,,,:/home/linuxtechi:/bin/bash
[email protected]:~#

示例2)在多个文件中搜索模式

要在/ etc / passwd,/ etc / shadow和/ etc / gshadow等多个文件中搜索“ linuxtechi”一词,请运行

[email protected]:~# grep linuxtechi /etc/passwd /etc/shadow /etc/gshadow
/etc/passwd:linuxtechi:x:1000:1000:linuxtechi,,,:/home/linuxtechi:/bin/bash
/etc/shadow:linuxtechi:$6$DdgXjxlM$4flz4JRvefvKp0DG6re:16550:0:99999:7:::/etc/gshadow:adm:*::syslog,linuxtechi
/etc/gshadow:cdrom:*::linuxtechi
/etc/gshadow:sudo:*::linuxtechi
/etc/gshadow:dip:*::linuxtechi
/etc/gshadow:plugdev:*::linuxtechi
/etc/gshadow:lpadmin:!::linuxtechi
/etc/gshadow:linuxtechi:!::
/etc/gshadow:sambashare:!::linuxtechi
[email protected]:~#

示例3)列出包含单词的那些文件的名称(grep -l)

假设我们要从多个文件中列出包含单词“ linuxtechi”的文件,为此请在grep命令中使用“ -l”选项,后跟单词(模式)和文件。

[email protected]:~# grep -l linuxtechi /etc/passwd /etc/shadow /etc/fstab /etc/mtab
/etc/passwd
/etc/shadow
[email protected]:~#

示例4)在文件中搜索模式以及相关的行号(grep -n)

假设我们想要列表行及其与模式或单词匹配的数字。 在grep命令中使用’-n’选项,在我们的示例模式中是’linuxtechi’

[email protected]:~# grep -n linuxtechi /etc/passwd
39:linuxtechi:x:1000:1000:linuxtechi,,,:/home/linuxtechi:/bin/bash
[email protected]:~#

下面是另一个示例,该示例在/ etc / passwd和/ etc / shadow文件中匹配单词“ root”后显示行及其编号

[email protected]:~# grep -n root /etc/passwd /etc/shadow

示例5)打印除模式之外的行(grep -v)

列出文件/ etc / passwd中所有不包含特定单词“ linuxtechi”的行。

[email protected]:~# grep -v linuxtechi /etc/passwd

grep-v-option

示例6)搜索以特定模式(grep ^)开头的所有行

Bash shell将插入号(^)视为特殊字符,用于标记行或单词的开头。 让我们显示在文件/ etc / passwd中以“ root”一词开头的行,在grep命令下运行

[email protected]:~# grep ^root /etc/passwd
root:x:0:0:root:/root:/bin/bash
[email protected]:~#

示例7)搜索所有以特定单词结尾的行(grep $)

Bash shell将dolar sysmbol’$’视为特殊字符,用于标记行或单词的结尾。 列出/ etc / passwd所有以“结尾”的行重击”字。

[email protected]:~# grep bash$ /etc/passwd
root:x:0:0:root:/root:/bin/bash
linuxtechi:x:1000:1000:linuxtechi,,,:/home/linuxtechi:/bin/bash
[email protected]:~#

示例8)递归搜索单词或模式(grep -r)

要在文件夹的所有文件中递归搜索单词,然后在grep命令中使用’-r’选项,示例如下所示:

[email protected]:~# grep -r linuxtechi /etc/
/etc/subuid:linuxtechi:100000:65536
/etc/group:adm:x:4:syslog,linuxtechi
/etc/group:cdrom:x:24:linuxtechi
/etc/group:sudo:x:27:linuxtechi
/etc/group:dip:x:30:linuxtechi
/etc/group:plugdev:x:46:linuxtechi
/etc/group:lpadmin:x:115:linuxtechi
/etc/group:linuxtechi:x:1000:
/etc/group:sambashare:x:131:linuxtechi
/etc/passwd-:linuxtechi:x:1000:1000:linuxtechi,,,:/home/linuxtechi:/bin/bash
/etc/passwd:linuxtechi:x:1000:1000:linuxtechi,,,:/home/linuxtechi:/bin/bash
............................................................................

上面的命令将在“ / etc”目录中递归搜索“ linuxtechi”单词。

示例9)搜索文件的所有空行或空白行(grep ^ $)

要搜索并列出文件中的所有空行或空白行,请在grep命令中使用特殊字符组合’^ $’,如下所示:

[email protected]:~# grep ^$ /etc/shadow
[email protected]:~#

由于/ etc / shadow文件中没有空行,因此什么也不显示。

示例10)搜索时忽略字母大小写(grep -i)

grep命令中的-i选项将忽略字母大小写,即在搜索时不会区分大写或小写字母

让我们举个例子,我想在passwd文件中搜索“ LinuxTechi”一词。

[email protected]:~$ grep -i LinuxTechi /etc/passwd
linuxtechi:x:1001:1001::/home/linuxtechi:/bin/bash
[email protected]:~$

注意 : Grep命令允许使用’-w’选项基于精确的单词进行搜索,示例如下所示,

[email protected]:~$ grep -w cook /mnt/my_dish.txt

上面的命令将搜索并查找带有“ cook”字样的行。 它不会给有烹饪的结果。

示例11)搜索多个模式或单词(grep -e)

例如,我想在单个grep命令中搜索’linuxtechi’和’root’词,然后在grep命令中使用-e选项,然后使用搜索模式

[email protected]:~# grep -e "linuxtechi" -e "root" /etc/passwd
root:x:0:0:root:/root:/bin/bash
linuxtechi:x:1000:1000:linuxtechi,,,:/home/linuxtechi:/bin/bash
[email protected]:~#
or 
[email protected]:~# grep -E "linuxtechi|root" /etc/passwd

示例12)从文件获取搜索模式(grep -f)

在grep命令中使用’-f’选项从文件获取搜索模式。 示例如下所示:

首先在当前工作目录中创建一个搜索模式文件“ grep_pattern”。 以我为例,我提供了以下内容。

[email protected]:~# cat grep_pattern
^linuxtechi
root
false$
[email protected]:~#

现在尝试使用grep_pattern文件进行搜索。

[email protected]:~# grep -f grep_pattern /etc/passwd

grep -f选项

示例13)计算与搜索模式匹配的行数(grep -c)

如果您希望计算与搜索模式匹配的行数,请在grep命令中使用’-c’选项。

让我们考虑以上示例,并计算与搜索模式匹配的行,

[email protected]:~# grep -c -f grep_pattern /etc/passwd
22
[email protected]:~#

示例14)在模式匹配之前和之后显示N行(grep -B -A)

a)模式匹配前显示四行,在grep命令中使用-B选项,示例如下:

[email protected]:~# grep -B 4 "games" /etc/passwd

grep-B-选项

b)模式匹配后显示四行,在grep命令中使用-A选项

[email protected]:~# grep -A 4 "games" /etc/passwd

grep-A-选项

c)使用-C选项在模式匹配周围显示四行

[email protected]:~# grep -C 4 "games" /etc/passwd

grep-C-选项

以上全部来自文章,我希望这些示例将帮助您更有效地使用grep命令。 请在下面的评论部分中分享您的反馈和评论。

另请阅读Linux初学者的10个’rm’命令示例

Sidebar