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值,也 ...
随机推荐
- kuangbin 并查集
A : Wireless Network POJ - 2236 题意:并查集,可以有查询和修复操作 题解:并查集 #include<iostream> #include<cstdi ...
- 动态规划:HDU1248-钱币兑换问题
解题心得: (青蛙跳台阶:有n阶台阶,青蛙可以一次跳一阶也可以一次跳两阶,问总共有多好中跳法) 1.之前把这个问题的思路弄错了,以为是递推,就像青蛙跳台阶,用斐波那契求解.但是用斐波那契肯定会超范围. ...
- Java面试——多线程面试题总结
)两者都在等待对方所持有但是双方都不释放的锁,这时便会一直阻塞形成死锁. //存放两个资源等待被使用 public class Resource { public static Object obj1 ...
- 使用chrome开发程序,自动刷新开发目录
npm i livereload -g 在开发目录下: livereload 安装这个插件:https://chrome.google.com/webstore/detail/livereload/j ...
- vue时时监听input输入框中 输入内容 写法
Vue input 监听 使用 v-on:input="change" 实现即可 App.vue <template> <div> <md-field ...
- Go语言之并发编程(二)
通道(channel) 单纯地将函数并发执行是没有意义的.函数与函数间需要交换数据才能体现并发执行函数的意义.虽然可以使用共享内存进行数据交换,但是共享内存在不同的goroutine中容易发生竞态问题 ...
- Java多线程-yield(),sleep()以及wait()的区别
从操作系统的角度讲,os会维护一个ready queue(就绪的线程队列).并且在某一时刻cpu只为ready queue中位于队列头部的线程服务.但是当前正在被服务的线程可能觉得cpu的服务质量不够 ...
- loj2092 「ZJOI2016」大森林
ref不是太懂-- #include <algorithm> #include <iostream> #include <cstring> #include < ...
- phpstorm将本地代码传递到远程服务器
由于对vim不太熟悉,效率比较低,作为过渡阶段,采用本地编写代码,然后上传到开发机上,进行调试 前提是服务器开启了ftp服务:http://www.cnblogs.com/redirect/p/693 ...
- 【Palindrome Number】cpp
题目: Determine whether an integer is a palindrome. Do this without extra space. click to show spoiler ...