转自:https://linux.cn/article-5453-1.html

编译自:http://www.linuxtechi.com/linux-grep-command-with-14-different-examples/ 作者: Pradeep Kumar
原创:LCTT https://linux.cn/article-5453-1.html
译者: cvsher
本文地址:https://linux.cn/article-5453-1.html

2015-5-17 08:10   
评论: 8 收藏: 16

概述:

所有的类linux系统都会提供一个名为grep(global regular expression print,全局正则表达式输出)的搜索工具。grep命令在对一个或多个文件的内容进行基于模式的搜索的情况下是非常有用的。模式可以是单个字符、多个字符、单个单词、或者是一个句子。

当命令匹配到执行命令时指定的模式时,grep会将包含模式的一行输出,但是并不对原文件内容进行修改。

在本文中,我们将会讨论到14个grep命令的例子。

例1 在文件中查找模式(单词)

在/etc/passwd文件中查找单词“linuxtechi”

  1. root@Linux-world:~# grep linuxtechi /etc/passwd
  2. linuxtechi:x:1000:1000:linuxtechi,,,:/home/linuxtechi:/bin/bash
  3. root@Linux-world:~#

例2 在多个文件中查找模式。

  1. root@Linux-world:~# grep linuxtechi /etc/passwd /etc/shadow /etc/gshadow
  2. /etc/passwd:linuxtechi:x:1000:1000:linuxtechi,,,:/home/linuxtechi:/bin/bash
  3. /etc/shadow:linuxtechi:$6$DdgXjxlM$4flz4JRvefvKp0DG6re:16550:0:99999:7:::/etc/gshadow:adm:*::syslog,linuxtechi
  4. /etc/gshadow:cdrom:*::linuxtechi
  5. /etc/gshadow:sudo:*::linuxtechi
  6. /etc/gshadow:dip:*::linuxtechi
  7. /etc/gshadow:plugdev:*::linuxtechi
  8. /etc/gshadow:lpadmin:!::linuxtechi
  9. /etc/gshadow:linuxtechi:!::
  10. /etc/gshadow:sambashare:!::linuxtechi
  11. root@Linux-world:~#

例3 使用-l参数列出包含指定模式的文件的文件名。

  1. root@Linux-world:~# grep -l linuxtechi /etc/passwd /etc/shadow /etc/fstab /etc/mtab
  2. /etc/passwd
  3. /etc/shadow
  4. root@Linux-world:~#

例4 使用-n参数,在文件中查找指定模式并显示匹配行的行号

  1. root@Linux-world:~# grep -n linuxtechi /etc/passwd
  2. 39:linuxtechi:x:1000:1000:linuxtechi,,,:/home/linuxtechi:/bin/bash
  3. root@Linux-world:~#
  1. root@Linux-world:~# grep -n root /etc/passwd /etc/shadow

例5 使用-v参数输出不包含指定模式的行

输出/etc/passwd文件中所有不含单词“linuxtechi”的行

  1. root@Linux-world:~# grep -v linuxtechi /etc/passwd

例6 使用 ^ 符号输出所有以某指定模式开头的行

Bash脚本将 ^ 符号视作特殊字符,用于指定一行或者一个单词的开始。例如输出/etc/passes文件中所有以“root”开头的行

  1. root@Linux-world:~# grep ^root /etc/passwd
  2. root:x:0:0:root:/root:/bin/bash
  3. root@Linux-world:~#

例7 使用 $ 符号输出所有以指定模式结尾的行。

输出/etc/passwd文件中所有以“bash”结尾的行。

  1. root@Linux-world:~# grep bash$ /etc/passwd
  2. root:x:0:0:root:/root:/bin/bash
  3. linuxtechi:x:1000:1000:linuxtechi,,,:/home/linuxtechi:/bin/bash
  4. root@Linux-world:~#

Bash脚本将美元($)符号视作特殊字符,用于指定一行或者一个单词的结尾。

例8 使用 -r 参数递归地查找特定模式

  1. root@Linux-world:~# grep -r linuxtechi /etc/
  2. /etc/subuid:linuxtechi:100000:65536
  3. /etc/group:adm:x:4:syslog,linuxtechi
  4. /etc/group:cdrom:x:24:linuxtechi
  5. /etc/group:sudo:x:27:linuxtechi
  6. /etc/group:dip:x:30:linuxtechi
  7. /etc/group:plugdev:x:46:linuxtechi
  8. /etc/group:lpadmin:x:115:linuxtechi
  9. /etc/group:linuxtechi:x:1000:
  10. /etc/group:sambashare:x:131:linuxtechi
  11. /etc/passwd-:linuxtechi:x:1000:1000:linuxtechi,,,:/home/linuxtechi:/bin/bash
  12. /etc/passwd:linuxtechi:x:1000:1000:linuxtechi,,,:/home/linuxtechi:/bin/bash
  13. ............................................................................

上面的命令将会递归的在/etc目录中查找“linuxtechi”单词

例9 使用 grep 查找文件中所有的空行

  1. root@Linux-world:~# grep ^$ /etc/shadow
  2. root@Linux-world:~#

由于/etc/shadow文件中没有空行,所以没有任何输出

例10 使用 -i 参数查找模式

grep命令的-i参数在查找时忽略字符的大小写。

我们来看一个例子,在paswd文件中查找“LinuxTechi”单词。

  1. nextstep4it@localhost:~$ grep -i LinuxTechi /etc/passwd
  2. linuxtechi:x:1001:1001::/home/linuxtechi:/bin/bash
  3. nextstep4it@localhost:~$

例11 使用 -e 参数查找多个模式

例如,我想在一条grep命令中查找‘linuxtechi’和‘root’单词,使用-e参数,我们可以查找多个模式。

  1. root@Linux-world:~# grep -e "linuxtechi" -e "root" /etc/passwd
  2. root:x:0:0:root:/root:/bin/bash
  3. linuxtechi:x:1000:1000:linuxtechi,,,:/home/linuxtechi:/bin/bash
  4. root@Linux-world:~#

例12 使用 -f 用文件指定待查找的模式

首先,在当前目录中创建一个搜索模式文件“grep_pattern”,我想文件中输入的如下内容。

  1. root@Linux-world:~# cat grep_pattern
  2. ^linuxtechi
  3. root
  4. false$
  5. root@Linux-world:~#

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

  1. root@Linux-world:~# grep -f grep_pattern /etc/passwd

例13 使用 -c 参数计算模式匹配到的数量

继续上面例子,我们在grep命令中使用-c命令计算匹配指定模式的数量

  1. root@Linux-world:~# grep -c -f grep_pattern /etc/passwd
  2. 22
  3. root@Linux-world:~#

例14 输出匹配指定模式行的前或者后面N行

a)使用-B参数输出匹配行的前4行

  1. root@Linux-world:~# grep -B 4 "games" /etc/passwd

b)使用-A参数输出匹配行的后4行

  1. root@Linux-world:~# grep -A 4 "games" /etc/passwd

c)使用-C参数输出匹配行的前后各4行

  1. root@Linux-world:~# grep -C 4 "games" /etc/passwd


via: http://www.linuxtechi.com/linux-grep-command-with-14-different-examples/

作者:Pradeep Kumar 译者:cvsher 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

14 个 grep 命令的例子 【转】的更多相关文章

  1. Linux输入输出重定向和文件查找值grep命令

    Linux输入输出重定向和文件查找值grep命令 一.文件描述符Linux 的shell命令,可以通过文件描述符来引用一些文件,通常使用到的文件描述符为0,1,2.Linux系统实际上有12个文件描述 ...

  2. Linux中通过grep命令检索文件内容和指定内容前后几行

    原文链接: https://www.linuxidc.com/Linux/2017-11/148390.htm Linux系统中搜索.查找文件中的内容,一般最常用的是grep命令,另外还有egrep命 ...

  3. Ubuntu 14.10 下grep命令详解

    简介 grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它 ...

  4. Linux中grep命令的12个实践例子

    grep是每个Linux发行版都预装的一个强有力的文件模式搜索工具.无论何种原因,如果你的系统没有预装它的话,你可以很容易的通过系统的包管理器来安装它(Debian/Ubuntu系中的apt-get和 ...

  5. grep命令的or,and,not操作的例子

    在Linux的grep命令中如何使用OR,AND,NOT操作符呢? 其实,在grep命令中,有OR和NOT操作符的等价选项,但是并没有grep AND这种操作符.不过呢,可以使用patterns来模拟 ...

  6. Linux 中 grep 命令的 12 个实践例子

    2017-10-17 Linux小管家 你是否遇到过需要在文件中查找一个特定的字符串或者样式,但是不知道从哪儿开始?那么,就请grep来帮你吧. grep是每个Linux发行版都预装的一个强有力的文件 ...

  7. grep 命令详解

    [root@www ~]# grep [-acinv] [--color=auto] '搜寻字符串' filename 选项与参数: -a :将 binary 文件以 text 文件的方式搜寻数据 - ...

  8. liunx 的 grep命令(转载)

    简介 grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它 ...

  9. Linux之grep命令详解

    简介 grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它 ...

随机推荐

  1. 使用 tox flake8 pytest 规范 python 项目

    使用 tox flake8 pytest 规范 python 项目 python 中有些很好的工作来规范整个项目的开发,而其中使用较多的就是使用 tox . flake8 . pytest . tox ...

  2. centos python 2.7 安装

    一开始有这个需求,是因为用 YaH3C 替代 iNode 进行校园网认证时,一直编译错误,提示找不到 Python 的某个模块,百度了一下,此模块是在 Python2.7 以上才有的,但是系统的自带的 ...

  3. Java 找到数组中两个元素相加等于指定数的所有组合

    思路1:可以用hash表来存储数组中的元素,这样我们取得一个数后,去判断sum - val 在不在数组中,如果在数组中,则找到了一对二元组,它们的和为sum,该算法的缺点就是需要用到一个hash表,增 ...

  4. [转载]WGS84坐标与Web墨卡托坐标互转

    //经纬度转Wev墨卡托 dvec3 CMathEngine::lonLat2WebMercator(dvec3 lonLat) { dvec3 mercator; ; +lonLat.y)*PI/) ...

  5. 解决:打开OleView报错 dllregisterserver in iviewers failed

    用管理员权限运行OleView.exe即可(Visual Studio Tools\VS20XX开发人员命令提示 -> 用管理员权限运行 -> 输入OleView) http://stac ...

  6. jQuery.proxy()函数

    jQuery.proxy(),接受一个函数,然后返回一个新函数,并且这个新函数始终保持了特定的上下文(context)语境.   context 代表上下文 name是上下文的某个属性 jQuery. ...

  7. Leetcode: Max Sum of Rectangle No Larger Than K

    Given a non-empty 2D matrix matrix and an integer k, find the max sum of a rectangle in the matrix s ...

  8. 配置hibernate根据实体类自动建表功能(转载)

    hibernate支持自动建表,在开发阶段很方便,可以保证hbm与数据库表结构的自动同步. 如何使用呢?很简单,只要在hibernate.cfg.xml里加上如下代码 Xml代码<propert ...

  9. TTabControl、TMemo组件(制作一个简单的多文本编辑框)

    TTabControl包含一列字符串标签的tabs 每个标签控制一个对象 首先创建一个TForm;接下来添加TTabControl组件和一个文件对话框TOpenDialog(用于添加文件),然后在TT ...

  10. 【Origin】 破阵子-未可留 征人调

    几朝岁月,悠悠,容颜改,两鬓衰,可恨荣光不留! 一生事,忧心畔,可怜惶惶,不拿年岁当缠头: 只把扑朔往往,人生几回首: 等闲识得料峭处,一腔泪流: 曾记否,三十功名尘与土,不可解忧愁: 青春换得明日花 ...