转自http://blog.csdn.net/jackaduma/article/details/6900242
在Linux的grep命令中如何使用OR,AND,NOT操作符呢?
其实,在grep命令中,有OR和NOT操作符的等价选项,但是并没有grep AND这种操作符。不过呢,可以使用patterns来模拟AND操作的。下面会举一些例子来说明在Linux的grep命令中如何使用OR,AND,NOT。
在下面的例子中,会用到这个employee.txt文件,如下:
[plain] view plaincopy
$ cat employee.txt
100 Thomas Manager Sales $5,000
200 Jason Developer Technology $5,500
300 Raj Sysadmin Technology $7,000
400 Nisha Manager Marketing $9,500
500 Randy Manager Sales $6,000
(一)Grep OR 操作符
以下四种方法均能实现grep OR的操作。个人推荐方法3.
1.使用 \|
如果不使用grep命令的任何选项,可以通过使用 '\|' 来分割多个pattern,以此实现OR的操作。
[plain] view plaincopy
grep 'pattern1\|pattern2' filename
例子如下:
[plain] view plaincopy
$ grep 'Tech\|Sales' employee.txt
100 Thomas Manager Sales $5,000
200 Jason Developer Technology $5,500
300 Raj Sysadmin Technology $7,000
500 Randy Manager Sales $6,000
2.使用选项 -E
grep -E 选项可以用来扩展选项为正则表达式。 如果使用了grep 命令的选项-E,则应该使用 | 来分割多个pattern,以此实现OR操作。
[plain] view plaincopy
<span style="font-family:'Microsoft YaHei';font-size:16px;">grep -E 'pattern1|pattern2' filename</span>
例子如下:
[plain] view plaincopy
$ grep -E 'Tech|Sales' employee.txt
100 Thomas Manager Sales $5,000
200 Jason Developer Technology $5,500
300 Raj Sysadmin Technology $7,000
500 Randy Manager Sales $6,000
3. 使用 egrep
egrep 命令等同于‘grep -E’。因此,使用egrep (不带任何选项)命令,以此根据分割的多个Pattern来实现OR操作.
[plain] view plaincopy
egrep 'pattern1|pattern2' filename
例子如下:
[plain] view plaincopy
$ egrep 'Tech|Sales' employee.txt
100 Thomas Manager Sales $5,000
200 Jason Developer Technology $5,500
300 Raj Sysadmin Technology $7,000
500 Randy Manager Sales $6,000
4. 使用选项 -e
使用grep -e 选项,只能传递一个参数。在单条命令中使用多个 -e 选项,得到多个pattern,以此实现OR操作。
[plain] view plaincopy
grep -e pattern1 -e pattern2 filename
例子如下:
[plain] view plaincopy
$ grep -e Tech -e Sales employee.txt
100 Thomas Manager Sales $5,000
200 Jason Developer Technology $5,500
300 Raj Sysadmin Technology $7,000
500 Randy Manager Sales $6,000
(二) Grep AND 操作
1. 使用 -E 'pattern1.*pattern2'
grep命令本身不提供AND功能。但是,使用 -E 选项可以实现AND操作。
[plain] view plaincopy
grep -E 'pattern1.*pattern2' filename
grep -E 'pattern1.*pattern2|pattern2.*pattern1' filename
第一个例子如下:(其中两个pattern的顺序是指定的)
[plain] view plaincopy
$ grep -E 'Dev.*Tech' employee.txt
200 Jason Developer Technology $5,500
第二个例子:(两个pattern的顺序不是固定的,可以是乱序的)
[plain] view plaincopy
$ grep -E 'Manager.*Sales|Sales.*Manager' employee.txt
2. 使用多个grep命令
可以使用多个 grep 命令 ,由管道符分割,以此来实现 AND 语义。
[plain] view plaincopy
grep -E 'pattern1' filename | grep -E 'pattern2'
例子如下:
[plain] view plaincopy
$ grep Manager employee.txt | grep Sales
100 Thomas Manager Sales $5,000
500 Randy Manager Sales $6,000
(三) Grep NOT操作
1. 使用选项 grep -v
使用 grep -v 可以实现 NOT 操作。 -v 选项用来实现反选匹配的( invert match)。如,可匹配得到除下指定pattern外的所有lines。
[plain] view plaincopy
grep -v 'pattern1' filename
例子如下:
[plain] view plaincopy
$ grep -v Sales employee.txt
200 Jason Developer Technology $5,500
300 Raj Sysadmin Technology $7,000
400 Nisha Manager Marketing $9,500
当然,可以将NOT操作与其他操作联合起来,以此实现更强大的功能 组合。
如,这个例子将得到:‘Manager或者Developer,但是不是Sales’的结果:
[plain] view plaincopy
$ egrep 'Manager|Developer' employee.txt | grep -v Sales
200 Jason Developer Technology $5,500
400 Nisha Manager Marketing $9,500
转:http://blog.csdn.net/jackaduma/article/details/6900242
分享到:
相关推荐
linux下grep的详细用法介绍,有需要的欢迎下载
grep命令大全记录了linux下grep命令的使用方法,很全面,很强大。可以当一个帮助文档使用。
含有详细的Grep命令,快速易懂
linux grep 命令的详情解释 给初级者
研究报告:grep命令.ppt
grep命令详解
grep 命令操作说明使用详解
egrep和fgrep的命令只跟grep有很小不同。egrep是grep的扩展,支持更多的re元字符, fgrep就是fixed grep或fast grep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符表示回其自身的字面意义,不再特殊...
unix下学习grep命令不可多得的资料,决定原创,绝对值的你拥有!!
linuxgrep命令.pdf
grep是每个Linux发行版都预装的一个强有力的文件模式搜索工具... 我发现使用现实世界中的真实例子让你投身其中是让你接触grep命令的容易方式。 1.搜索和寻找文件 假设你已经在你的电脑上安装了一个全新的Ubuntu
grep命令介绍.docx Unix/Linux
本文主要对linux-shell脚本命令中的grep命令进行简介,希望对您有所帮助。
主要给大家介绍了关于Linux中利用grep命令如何检索文件内容的相关资料,并且给大家简单介绍了关于Linux grep和find的区别,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
该文档详尽地描述grep命令的用法和在开发中的好处
关于grep命令的使用方法,以及该命令的参数,同时还有一些例子说明
grep是一个强大的命令行工具,它允许在一个或多个文件中搜索与正则表达式匹配的行,并将匹配的结果写入标准输出。
在Linux系统下grep命令的功能非常的强大,其作用是查找整个文件里符合条件的关键字,grep命令在查找关键字时,只要查找到包含该关键字的行,就会把该行所有的内容全部显示出来。在使用grep命令时,如果配合管道符...