一. grep的来源

通过ex编辑器来查找某个字串:

:/pattern/p

其中p是打印,包含字符串pattern的第一行将被打印;如果需要打印包含pattern的所有行,可以这样:

:/g/pattern/p

当g出现在pattern前面时表示查找所有的行或者替换所有的行。

而被查找的模式pattern称作正则表达式regular expression,因此用简写RE来替换pattern后就是:

:g/RE/p

这就是grep的来历,即它表示“全局查找正则表达式并打印结果行“

二. grep如何工作

1. 命令格式

grep word filename filename..

其中word是我们要查找的字符串模式;模式后面所有单词都被视为文件名。

查找到模式后,将结果所在行打印到屏幕;整个过程它不会修改任何文件。

2. 输入文件

grep的输入可以来自标准输入或者管道,而不仅仅是文件。

例如:

(1 )管道输入

ps -ef | grep root

(2) 标准输入

grep  root (\n)

test root administrator

3. 元字符和选项

grep支持的元字符有如下:

  ^ : 行首定位符

  $: 行尾定位符

  .: 匹配单个字符

  *: 匹配0个或多个

  []: 匹配一组字符中的任意一个

  [x-y]: 匹配制定范围内的一个字符

  [^] :匹配不在指定范围内的字符

  \: 转意字符

  \<: 词首定位符

  \>: 词尾定位符

  \(..\): 匹配稍后将要使用的字符的标签

  x\{m\}或x\{m,\}或x\{m,n\} : 字符x的重复出现:m次,至少m次,至少m次但不超过n次

  \w:所有字母与数字,即[a-zA-Z0-9]

  \W:所有字母与数字之外的字符,即[^a-zA-Z0-9]

  \b:词边界

  +: 匹配一个或多个前导字符

  ?: 匹配零个或一个前导字符

  a|b|c: 匹配a或b或c

  ():组字符

  (..)(...) \1 \2:标签匹配字符

  

 

grep常用的选项包括:

  -b  在每一行前面加上其所在的块号,根据上下文定位磁盘块时可能会用到

  -c  显示匹配到的行的数目,而不显示行的内容

  -h  不显示文件名

  -i  比较字符时忽略大小写的区别

  -l  只列出匹配行所在的文件名,每个文件名只列一次,文件名之间用换行符分隔

  -n  在每一行前面加上它在文件中的相对行号

  -s  无声操作,只显示报错信息,以检查退出状态

  -v  反向查找,只显示不匹配的行

  -w  把表达式作为词来插座,就像它被\<和\>所包含一样

  -r  要求搜索子目录

   -F   不识别表达式中的元字符,所有字符仅代表他们自身 

4. grep的退出状态

  grep退出时会返回一个状态,以表示是否定位到需要查找的模式或文件。

  如果找到模式,grep退出状态为0,表示成功,否则返回1;

  当grep没有找到制定的搜索文件时,grep返回状态2。

  在执行完grep查找后,在sh中可以通过“echo $?”来查看其推出状态。

shell学习--grep1的更多相关文章

  1. shell学习总结之自定义函数

    shell学习总结之自定义函数 Myfun (){ echo -n "now i is $i " ! [ "$i" ] && exit ; ec ...

  2. SHELL学习笔记----IF条件判断,判断条件

    SHELL学习笔记----IF条件判断,判断条件 前言: 无论什么编程语言都离不开条件判断.SHELL也不例外.  if list then           do something here   ...

  3. shell学习笔记

    shell学习笔记 .查看/etc/shells,看看有几个可用的Shell . 曾经用过的命令存在.bash_history中,但是~/.bash_history记录的是前一次登录前记录的所有指令, ...

  4. shell学习指南-阅读笔记

    shell学习指南真不是刚开始学习shell应该看得书,虽然其中讲了简单的linux命令,shell语法等,但是每章也有些深入和生僻地方,我想如果我刚学shell看到这样的地方一定会头疼的要死.或许也 ...

  5. 【转】shell学习笔记(一)——学习目的性、特殊字符、运算符等

    1 学习shell的目的性 写之前我们先来搞清楚为什么要学shell,学习要有目的性 shell简单.灵活.高效,特别适合处理一些系统管理方面的小问题 shell可以实现自动化管理,让系统管理员的工作 ...

  6. Shell学习之结合正则表达式与通配符的使用(五)

    Shell学习之结合正则表达式与通配符的使用 目录 通配符 正则表达式与通配符 通配符 通配符的使用 正则表达式 正则表达式 正则表达式的使用 通配符 正则表达式与通配符 正则表达式用来在文件中匹配符 ...

  7. Shell学习之条件测试(四)

    Shell学习之条件测试 目录 逻辑测试 文件测试 数值比较 字符串比较 逻辑测试 格式: [ 表达式 ] 操作符 [ 表达式2 ] …… 命令1 操作符 命令2 …… 常用的操作符 ( 注意:-a和 ...

  8. Shell学习之环境变量配置文件(三)

    Shell学习之环境变量配置文件 目录 环境变量配置文件简介 环境变量配置文件作用 其他配置文件和登录信息 环境变量配置文件简介 环境变量配置文件简介 环境变量配置文件中主要是定义对系统操作环境生效的 ...

  9. Shell学习之Bash变量详解(二)

    Shell学习之Bash变量详解 目录 Bash变量 Bash变量注意点 用户自定义变量 环境变量 位置参数变量 预定义变量 Bash变量 用户自定义变量:在Bash中由用户定义的变量. 环境变量:这 ...

随机推荐

  1. HTTP权威协议笔记-7.缓存

    7.1 冗余的数据传输 缓存的作用:当客户端每次访问服务器,服务器都会返回一份相同文件,一些相同的字节会不断的在网络内传输,这样冗余的数据传输会耗尽昂贵的带宽,降低传输速度,加重Web服务器的负载. ...

  2. poj1050

    To the Max Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 39081   Accepted: 20639 Desc ...

  3. 第十五课:奇葩的元素节点iframe

    iframe一般用来加载一个页面,然后嵌入到主页面中.创建起来消耗资源,而且消耗连接数.但是它是一个物超所值的东西,可以实现无缝刷新,模拟onhashchange跨域,安全的加载第三方资源与广告,实现 ...

  4. javascript照片墙效果

    <!doctype html> <html> <head> <meta charset="UTF-8"> <title> ...

  5. 百度音乐API抓取

    百度音乐API抓取 前段时间做了一个本地音乐的播放器 github地址,想实现在线播放的功能,于是到处寻找API,很遗憾,不是歌曲不全就是质量不高.在网上发现这么一个APIMRASONG博客,有“获取 ...

  6. spring 自动扫描、注册的类是否可以定义构造函数

    答案是肯定的. 方法如下: @Service public class SimpleMovieLister { private MovieFinder movieFinder; @Autowired ...

  7. 事务BEGIN TRANSACTION

    事务(Transaction)是并发控制的基本单位.所谓的事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位.例如,银行转账工作:从一个账号扣款并使另一个账号增款,这 ...

  8. 开源PLM软件Aras详解六 角色与用户以及权限

    在Aras中,角色(Identity),用户(Users),权限(Permissions),分别为3个ItemType,Permissions依赖与Identity,Identity可依赖与User. ...

  9. 什么是IO流 \ 以及文件输入输出

    一.IO流的分类: 流按照操作数据的类型分为两种:字节流:字符流. 1.什么是字节流:读取的是文件的二进制数据,不会对二进制做处理,不会解析成看得懂的数据. 2.什么是字符流:读取的是文件的二进制数据 ...

  10. ギリギリ eye (优先队列)

    1.题目: [题目描述] A.D.1999,由坠落地球的"谜之战舰"带来的 Over Technology,揭示了人类历史和远 古文明之间的丝丝联系,促使人类终止彼此间的战争,一方 ...