【操作系统之五】Linux常用命令之grep
一、概念
grep(Global search Regular Expression and Print out the line)强大的文本搜索工具,从文本文件或管道数据流中筛选匹配的行及数据,并把匹配的行/特定内容打印出来。
二、grep命令格式
grep [参数] [匹配模式] [查找的文件]
1、参数:
举例演示说明:
[root@PCS101 ~]# cat testgrep
zsy test
zsythink www.zsythink.com
TEST
Zsy's articles
grep Grep
abc
abc123abc
123zsy123
(1)-i,–ignore-case:忽略Pattern 和文件内容的大小写,默认情况下,grep是区分大小写的.
[root@PCS101 ~]# grep "test" testgrep
zsy test
[root@PCS101 ~]# grep -i "test" testgrep
zsy test
TEST
(2)-o:只打印匹配到的关键字,如果一行有多处匹配到也会分行来打印
-n –line-number 显示行号
[root@PCS101 ~]# grep -i "" testgrep
TEST
abc123abc
123zsy123
[root@PCS101 ~]# grep -i -n -o "" testgrep
:
:
:
:
[root@PCS101 ~]# grep -i -n "test" testgrep
:zsy test
:TEST
(3)-c 打印匹配到的总行数
[root@PCS101 ~]# grep -i -c "test" testgrep
(4)--color=auto 很有用,你看的出来
[root@PCS101 ~]# grep -i -n --color "test" testgrep
:zsy test
:TEST
(5)-Bn:输出匹配行之前的n行;-An:输出匹配行之后的n行;-Cn输出匹配行前后各n行
[root@PCS101 ~]# grep -B2 "www" testgrep
zsythink www.zsythink.com
[root@PCS101 ~]# grep -A3 "www" testgrep
www.zsythink.com
TEST
Zsy's articles
grep Grep
[root@PCS101 ~]# grep -C3 "www" testgrep
zsy test
zsythink www.zsythink.com
TEST
Zsy's articles
grep Grep
(6)-w –word-regexp:只选择匹配上整个单词时输出
[root@PCS101 ~]# grep "zsy" testgrep
zsy test
zsythink
www.zsythink.com
123zsy123
[root@PCS101 ~]# grep -w "zsy" testgrep
zsy test
(7)-v –invert-match:取没有匹配的行
[root@PCS101 ~]# grep -v "zsy" testgrep TEST
Zsy's articles
grep Grep
abc
abc123abc
(8)-e:根据不同的匹配模式来匹配
[root@PCS101 ~]# grep -e "abc" -e "test" testgrep
zsy test
abc
abc123abc
(9)-q:静默模式 当只关心某文件是否含有某个字符时 不关心匹配的行,需要使用echo $?输出0表示匹配到;输出1表示未匹配到
[root@PCS101 ~]# grep -q "test" testgrep
[root@PCS101 ~]# echo $? [root@PCS101 ~]# grep -q "ttttttt" testgrep
[root@PCS101 ~]# echo $?
(10)用grep -r递归搜索全部的文件
如果想查找当前目前以及其子目录的全部文件时,可以使用 -r 选项。如下例
[root@PCS101 ~]# grep -r "abc def" *
ddd/t1.txt:abc def hij klm
pcre-8.40/testdata/testoutput4: abc def\x{}\x{}xyz\npqr
pcre-8.40/testdata/testoutput4: abc def\x{}\x{}xyz\npqr
pcre-8.40/testdata/testinput4: abc def\x{}\x{}xyz\npqr
pcre-8.40/testdata/testinput4: abc def\x{}\x{}xyz\npqr
(11)用grep -l 只显示符合匹配条件的文件名
[root@PCS101 ddd]# grep -l "abc def" *
t1.txt
(12)grep默认使用基本正则表达式
egrep表示支持扩展正则表达式,相当于 grep -E;
grep -P 表示支持perl兼容的正则表达式;
fgrep表示不支持正则表达式,只能匹配写死的正则表达式,但是效率快;
2、匹配模式
匹配模式是你要好找的东西,可以是普通的文字符号也可以是正则表达式。
(1)扩展正则表达式在基本正则表达式上进行了修改,主要取消反斜线转移,更容易看
字符匹配:
.: 任意单个字符
[]: 指定范围内的任意单个字符
[^]: 指定范围外的任意单个字符 次数匹配:
*:匹配其前面的字符任意次;
?: 匹配其前面的字符0或1次;
+: 匹配其前面的字符至少1次
{m}: 匹配其前面的字符m次;
{m,n}: 至少m次,至多n次
{m,}: 至少m次;
{,n}:至多n次; 锚定:
^: 行首
$: 行尾
\<, \b: 词首
\>, \b:词尾 分组:
(): 分组
|: 或者, ac|bc
grep -E "con(C|c)at" 匹配conCat或concat
(2)基本正则表达式
匹配次数
*:前一个字符出现任意次数,包括0次
.* :任意字符出现任意次数
\?:前一个字符出现1次或者0次
\+:出现1次或者1次以上
\{n\}:精确匹配次数
\{m,n\}:匹配m到n次之间
\{n,\} :匹配最少n次以上
\{,n\} :匹配最多n次以上
[a-z]\+ : 任意一个字符至少出现一次 ;
. 在[]中没有任何意义,就是点本身 位置锚定
^ : 匹配行首
$ ; 匹配行尾
^$: 匹配空白行
[^]:取反匹配 分组
\(匹配内容\) :匹配括号内的内容
\n (数字) :重复前面匹配的内容再匹配
参考:
【操作系统之五】Linux常用命令之grep的更多相关文章
- linux操作系统2 linux常用命令
知识内容: 1.目录及文件操作 2.用户.群组与权限 3.重定向.管道 4.磁盘存储管理 5.系统命令 6.其他命令 参考: http://man.linuxde.net/ Linux命令规则:目录名 ...
- linux常用命令:grep 命令
Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达 ...
- Linux常用命令之-grep
简介 grep全称Global Regular Expression Print是一种强大的文本搜索工具,它能使用给定的正则表达式按行搜索文本输出,文件,目录等,统计并输出匹配的信息,grep在文本查 ...
- 吴裕雄--天生自然Linux操作系统:Linux常用命令大全
系统信息 arch 显示机器的处理器架构 uname -m 显示机器的处理器架构 uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI) ...
- Linux学习笔记之五————Linux常用命令之用户、权限管理
一.引言 用户是Unix/Linux系统工作中重要的一环,用户管理包括用户与组账号的管理. 在Unix/Linux系统中,不论是由本机或是远程登录系统,每个系统都必须拥有一个账号,并且对于不同的系统资 ...
- Linux常用命令之grep
标题:grep命令的使用 作用:grep可以解析一行文字,取得关键字,若该行存在关键字,就会整行列出. grep [-acinv] [--color=auto] '查找字符串' filename ...
- Linux 常用命令七 grep
一.grep命令 grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜 ...
- Linux常用命令touch/grep/mkdir/rm/cat/find/cp/mv/tar/gzip等
Unix-->Linux(Ubuntu,Redhat,suse,fedora) 1. cd - :回到上次执行的那个目录(相当于“回看”的功能) 2. touch :创建一个文件,可以是任意后缀 ...
- Linux常用命令整理 - imsoft.cnblogs
su 用户名 在不退出登陆的情况下,切换到另外一个人的身份如果用户名缺省,则切换到root状态会提示输入密码,密码不回显的. 在用su命令切换root用户时,使用“-”选项,这样可以将root的环境变 ...
随机推荐
- STMP发送邮件(C#)
记录一下使用SMTP协议发送邮件 public void Mail() { try { System.Net.Mail.SmtpClient client = new System.Net.Mail. ...
- python 练习题:将列表中的大写字母转换成小写
将列表中的大写字母转换成小写如果list中既包含字符串,又包含整数,由于非字符串类型没有lower()方法,L1 = ['Hello', 'World', 18, 'Apple', None]请修改列 ...
- MySql 获取数据库的所有表名
目录 写在前面 根据数据库获取该数据库下所有的表名 根据表名获取列名与列值 写在前面 在实现某个功能的时候,需要使用MySql数据库获取某数据的所有的表名以及该表名的所有列名与列值. 根据数据库获取该 ...
- delegate里的Invoke和BeginInvoke
Invoke和BeginInvoke都是调用委托实体的方法,前者是同步调用,即它运行在主线程上,当Invode处理时间长时,会出现阻塞的情况,而BeginInvod是异步操作,它会从新开启一个线程,所 ...
- 费劲周折的Haskell开发环境搭建过程
大概倒腾了一周才搭建好Haskell的开发环境,遇到了很多莫名其妙的问题. 首先,Haskell实在是够冷门,中文网站上的信息实在有限.仅有的一些安装教程分享都感觉不大靠谱,所以我还是直接去外网找吧. ...
- 项目中使用Redis的游标scan的一些小问题
最近项目中有一个需求就是在下拉中要筛选车辆列表,本来想着是在内存中全部用程序去遍历处理,但发现数据有点多,一个个去处理会有点慢.然后就找到了redis的游标 感觉这个能满足我的需求,我可以把key存成 ...
- java中的%取模
在java中的 % 实际上是取余. 下面为数学概念上的取余和取模: 对于整型数a,b来说,取模运算或者求余运算的方法都是: 1.求 整数商: c = a/b; 2.计算模或者余数: r = a - ...
- 修改Nginx配置参数解决http状态码:413上传文件大小限制问题
修改Nginx上传文件大小限制 我们使用ngnix做web server的时候,nginx对上传文件的大小有限制,默认是1M. 当超过大小的时候会报413(too large)错误.这个时候我们要修改 ...
- css实现保持div的等宽高比
这篇文章主要为回答这个问题:“做响应式网页,如何让一个div的高和宽保持比例放大或是缩小?”,这里不介绍媒体查询的实现. 那么css如何实现高度height随宽度width变化保持比例不变呢?即给定可 ...
- 监控微信小程序中的慢HTTP请求
摘要: 请求时间太长,影响用户体验,使用 Fundebug 监控慢请求. Fundebug 的微信小程序监控插件在 0.5.0 版本已经支持监控 HTTP 请求错误,在小程序中通过wx.request ...