shell学习--grep1
一. 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的更多相关文章
- shell学习总结之自定义函数
shell学习总结之自定义函数 Myfun (){ echo -n "now i is $i " ! [ "$i" ] && exit ; ec ...
- SHELL学习笔记----IF条件判断,判断条件
SHELL学习笔记----IF条件判断,判断条件 前言: 无论什么编程语言都离不开条件判断.SHELL也不例外. if list then do something here ...
- shell学习笔记
shell学习笔记 .查看/etc/shells,看看有几个可用的Shell . 曾经用过的命令存在.bash_history中,但是~/.bash_history记录的是前一次登录前记录的所有指令, ...
- shell学习指南-阅读笔记
shell学习指南真不是刚开始学习shell应该看得书,虽然其中讲了简单的linux命令,shell语法等,但是每章也有些深入和生僻地方,我想如果我刚学shell看到这样的地方一定会头疼的要死.或许也 ...
- 【转】shell学习笔记(一)——学习目的性、特殊字符、运算符等
1 学习shell的目的性 写之前我们先来搞清楚为什么要学shell,学习要有目的性 shell简单.灵活.高效,特别适合处理一些系统管理方面的小问题 shell可以实现自动化管理,让系统管理员的工作 ...
- Shell学习之结合正则表达式与通配符的使用(五)
Shell学习之结合正则表达式与通配符的使用 目录 通配符 正则表达式与通配符 通配符 通配符的使用 正则表达式 正则表达式 正则表达式的使用 通配符 正则表达式与通配符 正则表达式用来在文件中匹配符 ...
- Shell学习之条件测试(四)
Shell学习之条件测试 目录 逻辑测试 文件测试 数值比较 字符串比较 逻辑测试 格式: [ 表达式 ] 操作符 [ 表达式2 ] …… 命令1 操作符 命令2 …… 常用的操作符 ( 注意:-a和 ...
- Shell学习之环境变量配置文件(三)
Shell学习之环境变量配置文件 目录 环境变量配置文件简介 环境变量配置文件作用 其他配置文件和登录信息 环境变量配置文件简介 环境变量配置文件简介 环境变量配置文件中主要是定义对系统操作环境生效的 ...
- Shell学习之Bash变量详解(二)
Shell学习之Bash变量详解 目录 Bash变量 Bash变量注意点 用户自定义变量 环境变量 位置参数变量 预定义变量 Bash变量 用户自定义变量:在Bash中由用户定义的变量. 环境变量:这 ...
随机推荐
- 《全唐诗》的sqlite3数据库
下载地址: http://pan.baidu.com/s/1b2mE54quantangshi.db是sqlite3数据库,包括2张表.index表:volume 列(整数,主键) 表示卷号,从1到9 ...
- Python语法二
1.raw_input 输入 2.如果想查看某个关键字的用法,可以在命令行输入pydoc raw_input. 如果是windows,那么试一下 python -m pydoc raw_input 3 ...
- Python全栈开发day5
一.lambda表达式 对于简单的函数,存在一种简便的表示方式,即:lambda表达式 1 2 3 >>> shaw = lambda x,y:x + y >>> ...
- .net Session 超时控制
webconfig里明明设置了timeout是很大的数值了,可是session的有效性仍然无法维持一小时. 查了一下,主要是说 mode="InProc" 的话,session是放 ...
- CSS3实现Loading效果
使用Loding的gif图,每一帧图片的外层会有白色描边.所以如果必须使用gif图的话,请将背景色设置为白色. 你也尝试用以下方法,使用css来实现loading的效果 1. 适用于pc端.在移动端上 ...
- Android_SQLite版本升级,降级 管理
今天我们主要学习了数据库版本升级对软件的管理操作. 我们手机经常会收到xxx软件升级什么的提醒,你的软件版本更新,同时你的数据库对应的版本也要相应的更新. 数据库版本更新需要主要的问题: 软件的1.0 ...
- html 报表导出excel防止数字变科学计数
在html 标签加: <html xmlns:x="urn:schemas-microsoft-com:office:excel"> 在要导出的tr加: &l ...
- 何为babel / gulp
Babel主要用来将新版本的javascript(ES6,ES7)编译为ES5,目前它对于新标准的支持程度甚至高于Chrome浏览器.通过引入预设babel-preset-react,babel还能解 ...
- eclipse中outline中图标的含义
outline: 实心的代表方法 空心的代表属性 绿色的圆表示公有public 黄色的菱形表示保护protect 红色的方形表示私有private 蓝色的三角表示default 图形后加字母S代表该属 ...
- Ubuntu如何更新源
Ubuntu的源其实就是更新各种软件包需要用到镜像网站, 当大家在虚拟机上安装Linux镜像的时候肯定会遇到各种Linux软件没有安装,当你用apt-get安装的时候它会提示无效的网址,这个时候你就需 ...