grep的作用:根据指定的模式搜索文本,将匹配到的文本行显示出来

语法格式:grep [options] "PATTERN" file

PATTERN为正则表达式,grep一般是与正则表达式配合使用的,因此我们先介绍shell下的正则表达式。正则表达式,简单来说就是匹配规则。某一行文本与正则表达式进行匹配只有两种结果,要么匹配,要么不匹配。

接下来我们详细的介绍下正则表达式

1.元字符:

.: 匹配任意单个字符

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

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

字符集合:

[:digit:]  or [0-9] 数字  #####注意,在正则表达式中表示单个数字需要使用[[:digit:],比如说

grep '^[0-9]'  1.txt 等价与 grep '^[[:digit:]]' 1.txt

但是grep '^[:digit:]' 1.txt的写法是错误的 下面一样,不在赘述。

[:lower:]  or [a-z] 小写字母

[:upper:]  or [A-Z] 大写字母

[:punct:]  标点符号

[:space:]  空白

[:alpha:] [a-zA-Z] 字母

[:alnum:] [a-zA-Z0-9] 字母+数字

[^[:digit:]] 非数字

2.匹配次数(贪婪模式,  一直匹配到最后):

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

a, b, ab, aab, acb, adb, amnb

a*b, a?b

a.*b

.*: 任意长度的任意字符 (注意,区别于通配符)

\?: 匹配其前面的字符1次或0次     别忘了转义\

\{m,n\}:匹配其前面的字符至少m次,至多n次    别忘了转义\

\{1,\}  至少1次

\{0,3\} 0到3次

3.位置锚定:

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

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

^$: 空白行

\

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

4.分组: 别忘了转义

\(\)

\(ab\)*  ab看做是一个整体

后向引用

\1: 引用第一个左括号以及与之对应的右括号所包括的所有内容

\2:

\3:

在指定正则表达式的同时也可以指定选项

-i 忽略大小写

-v 显示不匹配的行

-o 只显示匹配的字符串

--color 高亮显示匹配到的内容

-E: 使用扩展正则表达式

光说不练假把式。下面给出几个例子

1、显示/proc/meminfo文件中以不区分大小的s开头的行;

grep -i '^s' /proc/meminfo

grep '^[sS]' /proc/meminfo

2、显示/etc/passwd中以nologin结尾的行;

grep 'nologin$' /etc/passwd

取出默认shell为/sbin/nologin的用户列表

grep "nologin$' /etc/passwd | cut -d: -f1

取出默认shell为bash,且其用户ID号最小的用户的用户名

grep 'bash$' /etc/passwd | sort -n -t: -k3 | head -1 | cut -d: -f1

3、显示/etc/inittab中以#开头,且后面跟一个或多个空白字符,而后又跟了任意非空白字符的行;

grep "^#[[:space:]]\{1,\}[^[:space:]]" /etc/inittab

4、显示/etc/inittab中包含了:一个数字:(即两个冒号中间一个数字)的行;

grep ':[0-9]:' /etc/inittab

5、显示/boot/grub/grub.conf文件中以一个或多个空白字符开头的行;

grep '^[[:space:]]\{1,\}' /boot/grub/grub.conf

6、显示/etc/inittab文件中以一个数字开头并以一个与开头数字相同的数字结尾的行;

grep '^\([0-9]\).*\1$' /etc/inittab

7.分析/etc/inittab文件中如下文本中前两行的特征(每一行中出现在数字必须相同),请写出可以精    确找到类似两行的模式:

l1:1:wait:/etc/rc.d/rc 1

l3:3:wait:/etc/rc.d/rc 3

grep '^l\([0-9]\):\1.*\1$' /etc/inittab

Linux中锚定符号的作用,Linux基础(9)文本处理三剑客之grep相关推荐

  1. linux中less有什么作用,linux中less命令使用

    less与cat和more的区别: cat命令功能用于显示整个文件的内容单独使用没有翻页功能因此经常和more命令搭配使用,cat命令还有就是将数个文件合并成一个文件的功能. more命令功能:让画面 ...

  2. 简述Linux中Swap分区的作用,linux下的swap分区

    一.什么叫swap分区 swap分区,即交换区,swap空间的作用可简单描述为:当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用.那些被释放的空间可能来自一 ...

  3. linux中dev目录的作用,Linux 的dev目录详解和Linux系统各个目录的作用

    Linux /dev目录详解 在linux下,/dev目录是很重要的,各种设备都在下面.下面简单总结一下: dev是设备(device)的英文缩写./dev这个目录对所有的用户都十分重要.因为在这个目 ...

  4. linux中touch命令的作用,Linux中touch命令的作用是什么

    今天微子网络向你展示了触摸命令在Linux中的功能.内容简洁易懂,一定会让你眼前一亮.希望通过这篇文章的详细介绍,你能有所收获. linux的Touch命令不常用,但在使用make时可能会用到,mak ...

  5. linux中tail命令的作用,Linux中tail命令用法详解

    tail命令也是一个非常常用的文件查看类的命令,今天就为大家介绍下Linux tail命令的用法. 更多Linux命令详情请看:Linux命令速查手册 Linux tail命令主要用来从指定点开始将文 ...

  6. Linux中特殊符号的作用

    文章目录 1 常见符号 1.1 $? $# $* $n $0 $@ 1.2 分号 1.3 引号 1.4 括号的作用 1.4.1 命令替换 1.4.2 数值运算 1.4.3 test运算 1.4.4 $ ...

  7. linux文件中的注释符号,Linux中特殊符号的作用

    如果不学习Linux或者学习编程语言,也许键盘上有些字符一辈子都不会用到,但是现在学习了敲命令,这些字符都"活"了,而且还有非常非常重要的作用,这里我们就来系统的总结一下,这些特殊 ...

  8. linux中elf文件的作用,Linux中ELF格式文件介绍

    一. ELF简介 ELF(Executable and Linkable Format)即可执行连接文件格式,是一种比较复杂的文件格式,但其应用广泛.与linux下的其他可执行文件(a.out,cof ...

  9. linux中etc profile的作用,linux的etc/profile文件的作用是什么

    满意答案 wzcloveq 推荐于 2019.03.04 采纳率:56%    等级:12 已帮助:9556人 Linux /etc/profile文件的改变会涉及到系统的环境,也就是有关Linux环 ...

最新文章

  1. 第七课.简单的图像分类(一)
  2. vue本地项目静态资源管理
  3. ※交换排序(1)——快速排序(quick sort)
  4. 云服务器ECS使用限制概览,让你的上云少走一些坑
  5. C++ 链表 leetcode习题总结
  6. pythonpandas读取csv文件最后一行_简单小案例(一):使用Pandas在Python中读取和写入CSV文件...
  7. 三维振镜原理_展商专访 | 先临三维与易加三维联合携多款精品及新品亮相2020年TCT亚洲展...
  8. markdown编辑器 语法示例
  9. 临床基因组分析相关数据库汇总
  10. 【ShaderLab学习】AlphaTest AlphaBlend理解[2]
  11. 淘宝直播数据丨食品行业研究报告2021年第一季度
  12. maya建模模型变黑问题解决
  13. 使用mac几年后,得换电池了
  14. 微信小程序图片显示模式
  15. Xamarin.Android之绑定库教程
  16. google账号解除游戏绑定_如何把已经玩过的游戏绑定谷歌账号,要在谷歌play内操作的话...
  17. 【Latex】Texstudio英文拼写错误检查功能出问题的解决方法
  18. Java——API(接口)
  19. Lawliet|C语言学习笔记3——顺序结构
  20. 解决The page at ‘xxx‘ was loaded over HTTPS

热门文章

  1. AttributeError: ‘dict‘ object has no attribute ‘append‘
  2. Android 动画的插值器 (Interpolator属性)
  3. java字符串的知识总结
  4. CRM中Plugin开发如何将功能放入多个模块
  5. 站立会议 ---01
  6. centos 6安装 vim
  7. HDU 4135 Co-prime(容斥原理)
  8. Linux下三个密码生成工具
  9. ORA-00942:表或视图不存在(低级错误)
  10. C语言的变量的内存分配