一、grep是什么?

  Linux grep命令是用于查找文件里符合条件行的shell命令。

二、为什么要使用grep?

  在查找文件内容时候,通过使用grep指定条件,可以快速定位到文件里字符串所在的行,提高效率。

三、grep的基本用法

grep命令有三个:grep,egrep,fgrep

grep:根据模式,搜索文本,并将复合模式的问本行显示出来。

-i: 忽视大小写
    --color: 高亮色显示匹配内容
    -v: 反向查找,没有被模式匹配到的行
    -o: 只显示被模式匹配到的字符串
    -A: 显示匹配到的行下面N行

-B: 显示匹配到的行上面N行
    -C: 显示匹配到的行上下行

正则表达式:

*: 匹配其前面的字符任意次

[root@node1 ~]# cat test
ab
aab
acb
adb
anmb
nmbnmbnmnbbbsdfb
[root@node1 ~]# egrep 'a*b' test   # 其面前字符的任意长度例如:b ab aab aaaab
ab
aab
acb
adb
anmb
nmbnmbnmnbbbsdfb

?: 匹配其前面的字符1次或0次

[root@node1 ~]# egrep 'a?b' test    # 匹配其前面的字符1次或者0次,如:ab b
ab
aab
acb
adb
anmb
nmbnmbnmnbbbsdfb

.: 匹配任意单个字符

[root@node1 ~]# egrep 'r..t' /etc/passwd   # 匹配如:root rabt r/ft
root:x:::root:/root:/bin/bash
operator:x:::operator:/root:/sbin/nologin
ftp:x:::FTP User:/var/ftp:/sbin/nologin

[-]: 匹配指定范围内的任意单个字符

[root@node1 ~]# netstat -ntplu | egrep '4[0-9]00'
tcp 10.0.0.10: 0.0.0.0:* LISTEN /httpd
tcp 10.0.0.10: 0.0.0.0:* LISTEN /httpd
tcp 10.0.0.10: 0.0.0.0:* LISTEN /httpd
tcp 10.0.0.10: 0.0.0.0:* LISTEN /httpd

[^-]: 匹配指定范围外的任意单个字符

[root@node1 ~]# netstat -ntplu | egrep '4[^1-3]00'
tcp 10.0.0.10: 0.0.0.0:* LISTEN /httpd

{}: 匹配其前面字符的多少次

[root@node1 ~]# egrep 'a{1,2}b' test  # 匹配内容 ab, aab
ab
aab

位置锚定:

^: 锚定行首,此字符后面的任意内容必须出现在行首

[root@node1 ~]# egrep '^root' /etc/passwd
root:x:::root:/root:/bin/bash

$: 锚定行尾,此字符后面的任意内容必须出现在行尾

[root@node1 ~]# egrep 'shutdown$' /etc/passwd   # 匹配以shutdown结尾的行
shutdown:x:::shutdown:/sbin:/sbin/shutdown

^$: 空白行

[root@node1 ~]# cat abc.txt
a b c
[root@node1 ~]# egrep '^$' abc.txt [root@node1 ~]# egrep '^$' abc.txt | wc -l   # 可以统计出来有两行是空格行

\<或\b: 其后面的任意字符必须作为单词首部出现

[root@node1 ~]# cat test.txt
This is root.
The user is mroot.
rooter is a dog's name.
mrooter is not a word.
[root@node1 ~]# egrep 'root\>' test.txt   # 匹配词尾的
This is root.
The user is mroot.

\>或\b: 其前面的任意字符必须作为单词尾部出现

[root@node1 ~]# cat test.txt   # 记住这里的词首不是行首。因此 This is root. 是没问题的
This is root.
The user is mroot.
rooter is a dog's name.
mrooter is not a word.
[root@node1 ~]# egrep '\<root' test.txt
This is root.
rooter is a dog's name.

[ Linux 命令 ] grep的更多相关文章

  1. linux 命令grep

    linux 命令grep grep命令用来搜索文本,或从给定的文件中搜索行内包含了给定字符串或单词的文件.通常来说,grep显示匹配的行.使用grep来搜索包括一个或多个正则表达式匹配到的文本行,然后 ...

  2. 【linux】linux命令grep + awk 详解

    linux命令grep  +  awk 详解 grep:https://www.cnblogs.com/flyor/p/6411140.html awk:https://www.cnblogs.com ...

  3. Linux 命令 - grep: 正则搜索文本

    grep 搜索文本文件中与指定正则表达式匹配的行 命令格式 grep [OPTIONS] PATTERN [FILE...] 命令参数 Generic Program Information --he ...

  4. Linux 命令——grep | 正则表达式

    感觉讲的很详细,瞬间懂了grep,正则. from: here 简介 grep (global search regular expression(RE) and print out the line ...

  5. 菜鸟学Linux命令:grep配合ls等使用

    linux grep命令 (global search regular expression(RE) and print out the line )是一种强大的文本搜索工具,它能使用正则表达式搜索文 ...

  6. Linux命令-grep

    grep命令用于对文本进行搜索,格式为“grep [选项] [文件]” 搜索某个关键词:"grep 关键词 文本文件" 参数说明 -b 将可执行文件当做文本文件来搜索 -c 仅显示 ...

  7. (转)Linux命令grep

    场景:grep命令在文件搜索中经常会使用到,所以熟练掌握该命令对于日常日志搜索相当有必要! Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.g ...

  8. 日志快速筛选 之 linux命令grep|uniq|wc|awk

    以前我个人的观念是,在线上运行的东西尽量不要记什么流水日志. 但是后来我变了,发现在线上记日志是一个绝对有必要的东西,尤其是在当下很流行的微服务的推动下,没有日志的帮助,犹如一个睁眼瞎,排查问题基本靠 ...

  9. linux命令-grep+正则表达式用法

    目标文件/etc/passwd,使用grep命令或egrep 1.显示出所有含有root的行:egrep 'root' passwd 2.输出任何包含bash的所有行,还要输出紧接着这行的上下各两行的 ...

随机推荐

  1. Word2vec之CBOW

    一.Word2vec word2vec是Google与2013年开源推出的一个用于获取word vecter的工具包,利用神经网络为单词寻找一个连续向量看空间中的表示.word2vec是将单词转换为向 ...

  2. 预研报告——MyBatis持久层的demo

    一.预研任务介绍和预研目标 任务介绍: 与 Hibernate 相比, MyBatis 是一个半自动化的持久层框架,以轻量级.效率高.原生代而好评如潮.虽然有在分享会上大致讲解,但是还是重新梳理成文字 ...

  3. lintcode-60-搜索插入位置

    60-搜索插入位置 给定一个排序数组和一个目标值,如果在数组中找到目标值则返回索引.如果没有,返回到它将会被按顺序插入的位置. 你可以假设在数组中无重复元素. 样例 [1,3,5,6],5 → 2 [ ...

  4. el-checkbox根据是否被选中执行不同的操作

    直接给el-checkbox绑定点击事件是没有效果的,因为它会被解析成其他形式的html,el-checkbox只是一个类名,因此,使用ts和jquery动态绑定事件: mounted() { $(& ...

  5. [C/C++] #ifdef和#endif

    一般情况下,源程序中所有的行都参加编译.但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”.有时,希望当满足某条件时对一组语句进行编译,而当条 ...

  6. BZOJ 3876:支线剧情(有下界最小费用最大流)

    3876: [Ahoi2014]支线剧情 Description [故事背景]宅男JYY非常喜欢玩RPG游戏,比如仙剑,轩辕剑等等.不过JYY喜欢的并不是战斗场景,而是类似电视剧一般的充满恩怨情仇的剧 ...

  7. BZOJ4311 向量(线段树分治+三分)

    由点积的几何意义(即投影)可以发现答案一定在凸壳上,并且投影的变化是一个单峰函数,可以三分.现在需要处理的只有删除操作,线段树分治即可. #include<iostream> #inclu ...

  8. 【题解】CQOI2012交换棋子

    感受到网络流的强大了……这道题目的关键在于: 前后颜色不变的,流入流出的次数相等:原本是黑色的最后变成了白色,流出比流入次数多1:原本是白色最后变成黑色,流入比流出次数多一.所以我们将每一点拆成3个点 ...

  9. PyQt5学习--基本窗口控件--QMainWindow

    QMainWindow主窗口为用户提供一个应用程序框架,它有自己的布局,可以在布局中添加控件.比如将工具栏.菜单栏和状态栏等添加到布局管理器中. 窗口类型介绍 QMainWindow.QWidget和 ...

  10. BZOJ4569 [SCOI2016]萌萌哒 【并查集 + 倍增】

    题目链接 BZOJ4569 题解 倍增的思想很棒 题目实际上就是每次让我们合并两个区间对应位置的数,最后的答案\(ans = 9 \times 10^{tot - 1}\),\(tot\)是联通块数, ...