grep的简单理解
grep最早由肯·汤普逊写成。原先是ed下的一个应用程序,名称来自于g/re/p(globally search a regular expression and print,以正则进行全域查找以及打印)。在ed下,输入g/re/p这个命令后,会将所有匹配‘定义样式’的字符串,以行为单位打印出,但是并不对原文件内容进行修改。grep命令在对一个或多个文件的内容进行基于模式搜索的情况下是非常有用的。模式可以是单个字符、多个字符、单个单词、或者是一个句子。当然最有用的还是正则。
grep match_pattern file_name #标记匹配颜色加 --color=auto 选项
2 grep "match_pattern" file_name
grep "match_pattern" file_1 file_2 file_3 ...
root@linux:~# grep -l root /etc/passwd /etc/shadow /etc/fstab
grep "text" -n file_name
cat file_name | grep "text" -n
grep "text" -n file_1 file_2 #多个文件 使用正则表达式 -E 选项:
grep -E "[1-9]+"
egrep "[1-9]+" 只输出文件中匹配到的部分 -o 选项:
echo this is a test line. | grep -o -E "[a-z]+\."
line.
echo this is a test line. | egrep -o "[a-z]+\."
line.
grep -v "match_pattern" file_name
#只在目录中所有的.php和.html文件中递归搜索字符 grep "main()" . -r --include *.{php,html}
#在搜索结果中排除所有README文件 grep "main()" . -r --exclude "README"
#在搜索结果中排除filelist文件列表里的文件 grep "main()" . -r --exclude-from filelist
grep -r root /etc/ #上面的命令将会递归的在/etc目录中查找“root”单词
grep ^$ /etc/shadow #由于/etc/shadow文件中没有空行,所以没有任何输出
echo this is a text line | grep -e "is" -e "line" -o
is
is
line
cat patfile
aaa
bbb
echo aaa bbb ccc ddd eee | grep -f patfile -o
echo this is a text line |grep -E "is|line" -o
-E {}前面要的内容如果是多个字符,要用()包裹起来,否则只会匹配{}前面相连的单一字符
root@Linux:~# cat grep_file
^root
root
false$
root@Linux:~# grep -f grep_file /etc/passwd
root@Linux:~# grep -cf file /etc/passwd #cf参数的顺序不能颠倒,file里定义要匹配的模式
2
a)使用-B参数输出匹配行的前4行
b)使用-A参数输出匹配行的后4行
c)使用-C参数输出匹配行的前后各4行
例15 -q 静默输出,用于测试
echo gun is not unix | grep -bo "not"
:not
#一行中字符串的字符便宜是从该行的第一个字符开始计算,起始值为0。选项 -b -o 一般总是配合使用。
grep的简单理解的更多相关文章
- git的简单理解及基础操作命令
前端小白一枚,最近开始使用git,于是花了2天看了廖雪峰的git教程(偏实践,对于学习git的基础操作很有帮助哦),也在看<git版本控制管理>这本书(偏理论,内容完善,很不错),针对所学 ...
- 简单理解Struts2中拦截器与过滤器的区别及执行顺序
简单理解Struts2中拦截器与过滤器的区别及执行顺序 当接收到一个httprequest , a) 当外部的httpservletrequest到来时 b) 初始到了servlet容器 传递给一个标 ...
- [转]简单理解Socket
简单理解Socket 转自 http://www.cnblogs.com/dolphinX/p/3460545.html 题外话 前几天和朋友聊天,朋友问我怎么最近不写博客了,一个是因为最近在忙着公 ...
- Js 职责链模式 简单理解
js 职责链模式 的简单理解.大叔的代码太高深了,不好理解. function Handler(s) { this.successor = s || null; this.handle = funct ...
- Deep learning:四十六(DropConnect简单理解)
和maxout(maxout简单理解)一样,DropConnect也是在ICML2013上发表的,同样也是为了提高Deep Network的泛化能力的,两者都号称是对Dropout(Dropout简单 ...
- Deep learning:四十二(Denoise Autoencoder简单理解)
前言: 当采用无监督的方法分层预训练深度网络的权值时,为了学习到较鲁棒的特征,可以在网络的可视层(即数据的输入层)引入随机噪声,这种方法称为Denoise Autoencoder(简称dAE),由Be ...
- 简单理解dropout
dropout是CNN(卷积神经网络)中的一个trick,能防止过拟合. 关于dropout的详细内容,还是看论文原文好了: Hinton, G. E., et al. (2012). "I ...
- 我们为之奋斗过的C#-----C#的一个简单理解
我们首先来简单叙述一下什么是.NET,以及C#的一个简单理解和他们俩的一个区别. 1 .NET概述 .NET是Microsoft.NET的简称,是基于Windows平台的一种技术.它包含了能在.NET ...
- 简单理解ECMAScript2015中的箭头函数新特性
箭头函数(Arrow functions),是ECMAScript2015中新加的特性,它的产生,主要有以下两个原因:一是使得函数表达式(匿名函数)有更简洁的语法,二是它拥有词法作用域的this值,也 ...
随机推荐
- P1309 瑞士轮
题目背景 在双人对决的竞技性比赛,如乒乓球.羽毛球.国际象棋中,最常见的赛制是淘汰赛和循环赛.前者的特点是比赛场数少,每场都紧张刺激,但偶然性较高.后者的特点是较为公平,偶然性较低,但比赛过程往往十分 ...
- HDU 3966 Aragorn's Story 树链拋分
一.写在前面 终于开始开坑link-cut-tree这个了,对于网上找到的大佬的前进路线,进行了一番研发,发现实际上可以实现对于树链拋分的制作.经历了若干长时间之后终于打了出来(为什么每次学什么东西都 ...
- Flask With
- Python-S9—Day86-ORM项目实战之会议室预定相关
01 会议室预定1 02 会议室预定2 03 会议室预定3 04 会议室预定4 05 会议室预定5 06 会议室预定6 01 会议室预定1 1.1 项目的架构目录: 1.2 使用Pycharm创建Dj ...
- 如何使用 JSX 构建 Gutenberg 块
本教程将介绍使用 JSX 构建自定义块所需的步骤. 由于浏览器不支持 JSX 和 ES6,因此我们需要将代码编译后才能在浏览器中运行. 我们不需要手动编译代码,因为有些工具可以为我们自动执行此过程. ...
- 课堂笔记III
- ACdream 1738 世风日下的哗啦啦族I(分块大法+二分)
世风日下的哗啦啦族I Time Limit: 4000/2000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) Submit S ...
- SQL死锁
我们操作数据库大量数据时,可能会出现死锁现象. 所谓死锁: 是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统 ...
- 关于ContextImp的源码分析
关于ContextImp的源码分析 来源: http://blog.csdn.net/qinjuning/article/details/7310620 Context概述: Android ...
- swarm 集群管理
1.创建服务 docker service create --replicas 1 --name hello busybox ping baiud.com 2.显示服务详细信息 3.扩展服务数量 4. ...