grep -v、-e、-E
在Linux的grep命令中如何使用OR,AND,NOT操作符呢?
其实,在grep命令中,有OR和NOT操作符的等价选项,但是并没有grep AND这种操作符。不过呢,可以使用patterns来模拟AND操作的。下面会举一些例子来说明在Linux的grep命令中如何使用OR,AND,NOT。
在下面的例子中,会用到这个employee.txt文件,如下:
- $ 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的操作。
- grep 'pattern1\|pattern2' filename
例子如下:
- $ 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操作。
- grep -E 'pattern1|pattern2' filename
例子如下:
- $ 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操作.
- egrep 'pattern1|pattern2' filename
例子如下:
- $ 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操作。
- grep -e pattern1 -e pattern2 filename
例子如下:
- $ 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操作。
- grep -E 'pattern1.*pattern2' filename
- grep -E 'pattern1.*pattern2|pattern2.*pattern1' filename
第一个例子如下:(其中两个pattern的顺序是指定的)
- $ grep -E 'Dev.*Tech' employee.txt
- 200 Jason Developer Technology $5,500
第二个例子:(两个pattern的顺序不是固定的,可以是乱序的)
- $ grep -E 'Manager.*Sales|Sales.*Manager' employee.txt
2.使用多个grep命令
可以使用多个 grep 命令 ,由管道符分割,以此来实现 AND 语义。
- grep -E 'pattern1' filename | grep -E 'pattern2'
例子如下:
- $ 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。
- grep -v 'pattern1' filename
例子如下:
- $ 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’的结果:
- $ egrep 'Manager|Developer' employee.txt | grep -v Sales
- 200 Jason Developer Technology $5,500
- 400 Nisha Manager Marketing $9,500
转载于:https://www.cnblogs.com/franjia/p/4384362.html
grep -v、-e、-E相关推荐
- Linux 运维常用命令 find、awk、sed、grep、vi、ps、lsof、rpm
先用一个脚本,模拟创建 14 个测试文件: #!/bin/bash for ((i=1;i<=10;i++)); do if [ $i -lt 3 ] thentouch /home/mysql ...
- Linux shell 学习笔记(2)— 监测程序、磁盘空间和处理文件(ps -ef、top、kill、df、du 、grep、tar)
1. 监测程序 1.1 检查进程 默认情况下,ps 命令只会显示运行在当前控制台下的属于当前用户的进程. $ ps PID TTY TIME CMD 3081 pts/0 00:00:00 bash ...
- 文本查找查找命令的grep 、egrep、fgrep用法的详解
文本查找查找命令的grep .egrep.fgrep用法的详解 一.学习目标 了解并能熟悉运用grep.egrep.fgrep命令. 二.学习内容 1.grep.egrep.fgrep命令的意思和用法 ...
- grep、egrep、fgrep的用法与特性详解
[转载自]http://tanxw.blog.51cto.com/4309543/1361993 开篇 学习Linux也有一段时间了,对Linux多少也算是有点了解了,越是了解也就越对这 ...
- 几个常用的文本处理shell 命令:find、grep、xargs、sort、uniq、tr、cut、paste、wc、sed、awk
内容目录: find 文件查找 grep 文本搜索 xargs 命令行参数转换 sort 排序 uniq 消除重复行 用tr进行转换 cut 按列切分文本 paste 按列拼接文本 wc 统计行和字符 ...
- linux中正则表达式、find、xargs、grep以及sed等命令的用法
查找目录下的所有文件中是否含有某个字符串 find .|xargs grep -ri "IBM" 查找目录下的所有文件中是否含有某个字符串,并且只打印出文件名 find .|x ...
- Shell程序设计 | 文本处理工具 :正则表达式、grep、sed、awk
文章目录 正则表达式 grep sed awk 其它常用工具 cut sort uniq tr 常见面试题 第十行 有效电话号码 统计词频 转置文件 要想使用这些流式处理工具,那么就必须得了解正则表达 ...
- Shell—grep、sed、awk
Shell学习 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 既是一种命令语言,又是一种程序设计语言. Shell 是指一种应用程序,这个应用程序提供了一个界 ...
- 四剑客查找字符_linux 四剑客 find 、grep、sed、awk整理
linux 四剑客 find .grep.sed.awk整理 find 主要是用于查找Linux 操作系统的某个文件.目录所在路径,查找出满足条件的文件或者目录的路径 find / -name *.r ...
最新文章
- css中图片整合的使用,CSS Sprites:图片整合技术详细案例
- Go 支持Protocol Buffers的配置
- 集群、分布式、微服务的概念及异同
- 怎么从gitlab上下载别人的代码
- 深度学习- 激活函数总结(Sigmoid, Tanh, Relu, leaky Relu, PReLU, Maxout, ELU, Softmax,交叉熵函数)
- mysql 多个实例 备份_数据库Mysql备份多个数据库代码实例
- 大牛总结的 Git 使用技巧,写得太好了!
- 入门级XML学习(三)
- JVM内存模型和结构
- 东芝2000ac废粉盒怎么二次利用_阜新降级组件回收厂家,废太阳能板回收_振昌_光伏...
- 胡波外挂做模具3D装配的方法
- python性能测试框架_python性能测试框架locust(一)
- 第一章 项目时间管理的基本概念
- vue音乐播放器笔记
- linux命令里的xz是干嘛的,Ubuntu中的xz命令使用
- Autovue Client/Server 性能优化
- 微信小程序 + Bmob后端云
- 深度学习论文阅读目标检测篇(四)中英文对照版:YOLOv1《 You Only Look Once: Unified, Real-Time Object Detection》
- 如何在离开计算机后加密锁定,如何对企业电脑硬盘文件进行加密?
- 别人的面经(算法方向)
热门文章
- 如果让你拥有100万粉丝,你会做什么
- windows cmd color颜色设置
- The Interface name: -- index:21 you checked seems not up.
- Radware安全研究团队发现了可摧毁不安全IoT设备的“Brickerbot”恶意软件
- OC基础回想(十二)协议
- linux rpm 安装包制作
- Java 用正则表达式 提取目录
- 修改注册表真正的提高网速
- ASP.NET MVC4中@model使用多个类型实例的方法
- 《Python 学习手册4th》 第十二章 if测试和语法规则