文章目录

  • 前言
  • 正则表达式
  • grep命令用法
  • grep命令实例
    • 用法一:查找root字符串的行数以及内容
    • 用法二:查找"core id"字符串以及前后2行内容
    • 用法三:匹配包含"sh"字符串的内容
    • 用法四:匹配以"sh"结尾前面有0到2个字符的字符串
    • 用法五:匹配以"sh"结尾前面有0到2个字符的英文单词
    • 用法六:查询以"h"结尾的字符串
    • 用法七:查询当前目录下的所有文件中包含关键”hello2“ 的文件,以及行数

前言

Linux的“三剑客”指的是:grepsedawk
之所以被称为三剑客是通过上述工具可以更好的处理linux的查询结果。

正则表达式

上述命令之所以被称为三剑客是因为他们能很好的结合正则表达式来处理查询内容,并且只有上述“三剑客”能结合正则表达式使用。下面介绍以下正则表达式组成字符的含义:

元字符 功能 说明
^ 匹配首行 表示以某个字符开头
$ 匹配行尾 表示以某个字符结尾
^$ 空行的意思 表示空行的意思
. 匹配任意单个字符 表示匹配任意单个字符
* 匹配0个或多个此字符 表示重复的任意多个字符
\ 转义字符 表示转义字符
[] 匹配中括号内的字符 表示过滤括号内的字符
.* 代表任意多个字符 表示匹配任意多个字符

特殊的几个如下:

正则表达式 解释
. 任意一个字符。
[abc] 表示匹配一个字符,这个字符必须是abc中的一个。
[a-zA-Z] 表示匹配一个字符,这个字符必须是a-z或A-Z这52个字母中的一个。
[^123] 匹配一个字符,这个字符是除了1、2、3以外的所有字符。

对于一些常用的字符集,系统做了定义:

字符集 等价系统定义
[A-Za-z] 等价于 [[:alpha:]]
[0-9] 等价于 [[:digit:]]
[A-Za-z0-9] 等价于 [[:alnum:]
tab,space 等空白字符 [[:space:]]
[A-Z] 等价于 [[:upper:]]
[a-z] 等价于 [[:lower:]]
标点符号 [[:punct:]]

匹配次数:

\{m\} 匹配其前面出现的字符m次
\{m,\} 匹配其前面出现的字符至少m次
\{m,n\} 匹配其前面出现的字符至少m次,至多n次
\? 匹配其前面出现的内容0次或1次,等价于{0,1}
* 匹配其前面出现的内容任意次,等价于{0,},所以 “.*” 表述任意字符任意次,即无论什么内容全部匹配。

三剑客的功能非常强大,但我们只需要掌握他们分别擅长的领域即可:grep擅长查找功能sed擅长取行和替换awk擅长取列

grep命令用法

用法:

grep [选项]... PATTERN [FILE]...

列出一些常见的选项命令

选选项 解释
–color 对匹配到的文本着色显示
-v 反过来(invert),显示不配patern匹配到的行
-i 忽略大小写(ignore case)
-n 显示匹配的行号
-c 统计匹配的行数
-o 只显示被模式匹配到的字符串
-q 静默模式,不输出任何信息
-A –after-context=NUM 打印以文本结尾的NUM 行
-B –before-context=NUM 打印以文本起始的NUM 行
-C –context=NUM 打印输出文本NUM 行
-e 实现多个选项之间的逻辑or关系,例如:grep -e ‘cat’ -e ‘dog’ file
-w 被匹配的文本只能是单词,而不能是单词中的某一部分,如文本中有liker,而我搜寻的只是like,就可以使用-w选项来避免匹配liker
-E 开启扩展(Extend)的正则表达式,使用正则相当于egrep
-F 不支持正则,相当与fgrep

grep命令实例

用法一:查找root字符串的行数以及内容

[root@hadoop-master test-grep]# grep "root" /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@hadoop-master test-grep]# grep -n "root" /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin
[root@hadoop-master test-grep]# grep -vc "root" /etc/passwd
43
[root@hadoop-master test-grep]# grep -o "root" /etc/passwd
root
root
root
root

用法二:查找"core id"字符串以及前后2行内容

[root@hadoop-master test-grep]# grep -A 2 "core id" /proc/cpuinfo
core id     : 0
cpu cores   : 1
apicid      : 0
[root@hadoop-master test-grep]# grep -B 2 "core id" /proc/cpuinfo
physical id : 0
siblings    : 1
core id     : 0
[root@hadoop-master test-grep]# grep -C 2 "core id" /proc/cpuinfo
physical id : 0
siblings    : 1
core id     : 0
cpu cores   : 1
apicid      : 0

用法三:匹配包含"sh"字符串的内容

[root@hadoop-master test-grep]# grep "/.*sh" /etc/passwd
root:x:0:0:root:/root:/bin/bash
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
setroubleshoot:x:990:986::/var/lib/setroubleshoot:/sbin/nologin
saned:x:989:983:SANE scanner daemon user:/usr/share/sane:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
leo:x:1000:1000:leo:/home/leo:/bin/bash
mysql:x:987:1001::/home/mysql:/bin/bash

用法四:匹配以"sh"结尾前面有0到2个字符的字符串

[root@hadoop-master test-grep]# grep "/.\{0,2\}sh" /etc/passwd
root:x:0:0:root:/root:/bin/bash
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
saned:x:989:983:SANE scanner daemon user:/usr/share/sane:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
leo:x:1000:1000:leo:/home/leo:/bin/bash
mysql:x:987:1001::/home/mysql:/bin/bash

用法五:匹配以"sh"结尾前面有0到2个字符的英文单词

[root@hadoop-master test-grep]# grep -w ".\{0,2\}sh" /etc/passwd
root:x:0:0:root:/root:/bin/bash
leo:x:1000:1000:leo:/home/leo:/bin/bash
mysql:x:987:1001::/home/mysql:/bin/bash

用法六:查询以"h"结尾的字符串

[root@hadoop-master test-grep]# grep "h$" /etc/passwd
root:x:0:0:root:/root:/bin/bash
leo:x:1000:1000:leo:/home/leo:/bin/bash
mysql:x:987:1001::/home/mysql:/bin/bash

用法七:查询当前目录下的所有文件中包含关键”hello2“ 的文件,以及行数

[root@hadoop-master shell-test]# grep -nr "hello2"  ./
./test-grep/file.txt:leo2 hello2
./test-grep/file2.text:leo2 hello2 txt2

每天学一点儿shell:Linux三剑客——grep命令相关推荐

  1. 匹配行linux中grep命令的使用

    最近个人几篇文章介绍了改匹配行的文章. 关联文章的地址 linux中grep命令的用使 grep (global search regular expression(RE) and print out ...

  2. linux grep命令例子,Linux中grep命令的12个实践例子

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

  3. Linux之grep 命令

    Linux之grep 命令 1. grep 简介 [grep] (global search regular expression(RE) and print out the line,全面搜索正则表 ...

  4. linux命令查找关键字前五行,linux下grep命令实现查找多个关键字(与关系和或关系)...

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

  5. linux中grep的例子,Linux下grep命令使用实例

    那么你知道grep命令参数.如何使用grep命令去搜索某个文件中的内容呢.grep 命令递归查找.使用grep去匹配某一个单词么?接下来是小编为大家收集的Linux下grep命令使用实例,欢迎大家阅读 ...

  6. Linux,grep命令,在大日志文件中搜索关键字 最后/最开始出现位置

    Linux,grep命令,在大日志文件中搜索关键字 最后/最开始出现位置 grep [选项]... PATTERN [FILE]... grep -C N,(N代表一个整数)是搜索关键字出现位置,并且 ...

  7. Linux:grep命令检索文件内容详解

    前言 Linux系统中搜索.查找文件中的内容,一般最常用的是grep命令,另外还有egrep命令,同时vi命令也支持文件内容检索.下面来一起看看Linux利用grep命令检索文件内容的详细介绍. 方法 ...

  8. Linux高级专题详解--shell编程大全(shell变量,if语句,case语句,for循环,while循环,函数调用,数组,正则表达式,shell脚本三剑客--grep,sed,awk家族)

    shell编程 初始shell 程序 语言 编程 ---------------------------------- 语言 自然语言:汉语.英语 计算机语言:c语言.c++.(java php py ...

  9. linux中grep命令 菜鸟教程,linux grep正则表达式与grep用法详解

    需要大家牢记:正则表达式与通配符不一样,它们表示的含义并不相同 正则表达式只是字符串的一种描述,只有和支持正则表达式的工具相结合才能进行字符串处理.本文以grep为例来讲解正则表达式. grep命令 ...

最新文章

  1. java udp乱码_【Java】Java UDP 套接字编程乱码问题
  2. CNN网络优化加速开源代码汇总
  3. 计算机硬件技术基础东北大学,东北大学19春学期《计算机硬件技术基础》在线作业123答案...
  4. java代码走查常见错误_FindBugs常见错误描述和解决方法
  5. Scala学习教程笔记二之函数式编程、Object对象、伴生对象、继承、Trait、
  6. NeuSoft(2)添加系统调用
  7. Spring boot的Hello World入门
  8. 蓝桥杯java 算法训练 区间K大数查询
  9. 常用贴片三极管参数于常见三极管型号对照表
  10. POI增加 数据验证 下拉
  11. 一枚戒指,一场仪式,这件事阿里巴巴坚持了15年
  12. jacobi matlab程序,jacobi迭代法实验MATLAB程序数值分析
  13. 工程监测管理平台、工程数据看板、工程总览、动态模型、数据分析、数据跟踪、建筑工地、数据报表、警点管控、现场记录、观测记录、测点管理、模型管理、文档管理、墙体下沉、成员管理、axure原型、产品原型
  14. lol游戏挂机软件_直男玩家吐槽LOL手游:挂机,送头,队友菜
  15. linux下source filename,./filename,. filename,......
  16. PR视频剪辑软件教程
  17. 复杂美区块链溯源系统架构
  18. 黑苹果安装教程 (Mojave 10.14.5) ThinkPad T450
  19. 计算机文档库怎么进,Windows电脑注册表怎么进?
  20. 5906. 【NOIP2018模拟10.15】传送门 (portal)

热门文章

  1. 【FI】-【AM】跨工厂/事业部/利润中心的固定资产调拨
  2. Segment-段(SAP)
  3. ABAP中Conversion Routine示例
  4. 惨绝人寰的日期函数,用的方便
  5. SAP作业类型应用简介
  6. ALV一个百度文库的例子
  7. 中报亮眼,阅文的增长“飞轮”是如何练成的?
  8. mysql 嵌入式 c开发环境_【Linux】嵌入式C语言MySQL编程(libmysqlclient-dev使用)
  9. att格式汇编指令_ARM汇编伪指令介绍.
  10. error: a label can only be part of a statement and a declaration is not a statement