广告位联系
返回顶部
分享到

Linux中的grep -v、-e、-E用法小结

linux shell 来源:互联网 作者:佚名 发布时间:2022-11-05 20:27:42 人浏览
摘要

grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。 在Linux的

grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。

在Linux的grep命令中如何使用OR,AND,NOT操作符呢?

其实,在grep命令中,有OR和NOT操作符的等价选项,但是并没有grep AND这种操作符。不过呢,可以使用patterns来模拟AND操作的。下面会举一些例子来说明在Linux的grep命令中如何使用OR,AND,NOT。

在下面的例子中,会用到这个employee.txt文件,如下:

1

2

3

4

5

6

$ 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的操作。

1

grep 'pattern1\|pattern2' filename

例子如下:

1

2

3

4

5

$ 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操作。

1

grep -E 'pattern1|pattern2' filename  

例子如下:

1

2

3

4

5

$ 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操作.

1

egrep 'pattern1|pattern2' filename

例子如下:

1

2

3

4

5

$ 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操作。

1

grep -e pattern1 -e pattern2 filename

例子如下:

1

2

3

4

5

$ 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操作。

1

2

grep -E 'pattern1.*pattern2' filename 

grep -E 'pattern1.*pattern2|pattern2.*pattern1' filename

第一个例子如下:(其中两个pattern的顺序是指定的)

1

2

$ grep -E 'Dev.*Tech' employee.txt 

200  Jason   Developer  Technology  $5,500

第二个例子:(两个pattern的顺序不是固定的,可以是乱序的)

1

$ grep -E 'Manager.*Sales|Sales.*Manager' employee.txt

2.使用多个grep命令

可以使用多个 grep 命令 ,由管道符分割,以此来实现 AND 语义。

1

grep -E 'pattern1' filename | grep -E 'pattern2'

例子如下:

1

2

3

$ 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。

1

grep -v 'pattern1' filename

例子如下:

1

2

3

4

$ 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’的结果:

1

2

3

$ egrep 'Manager|Developer' employee.txt | grep -v Sales 

200  Jason   Developer  Technology  $5,500 

400  Nisha   Manager    Marketing   $9,500


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 : https://blog.csdn.net/lovedingd/article/details/127656283
相关文章
  • 进程状态ps -ef中的e、f含义讲解

    进程状态ps -ef中的e、f含义讲解
    linux或mac控制台下输入ps -ef | grep 关键字可以查看是否有相应的进程启动信息中包含关键字。如: ps的意思是process status,即进程状态。在控
  • Linux中的grep -v、-e、-E用法小结
    grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜
  • Linux实现彻底清理空文件夹的方法

    Linux实现彻底清理空文件夹的方法
    最近工作中遇到一个需求删除指定路径下的所有空文件夹。这里的空文件夹的认定标准是:如果某个文件夹的子文件夹全是空文件夹,也认
  • shell脚本实现字符串的动态替换方法

    shell脚本实现字符串的动态替换方法
    我们有时候需要完成字符串的多组替换,比如需要完成以下替换 将小草替换为真是让人印象深刻 将小狗的替换为可爱的 将你听清楚了吗替
  • shell循环命令的介绍
    1. for 命令 1.1 for 命令的使用 bash shell 提供了for命令,可以创建一个遍历一系列值的循环。每次一轮循环都使用其中一个值来执行已定义好的
  • shell脚本设置日志格式的方法
    shell脚本设置日志格式 1.封装函数 #!/bin/bash function log() { echo $@ } //测试: log this is a test... log today is `date +%Y-%m-%d` 2.设置时间日志 #!/bin/bash
  • linux下shell脚本备份文件的方法实现
    1、shell自动备份 主要功能: 1)将pathSrc目录中的文件拷贝到pathDst目录中去。 具体步骤:先查询源目录和目标目录中的文件,分别存在file
  • shell脚本实现定时删除文件或文件夹
    一、删除XX天(默认10天)之前某个目录下面带.log的日志文件,并且输出文件显示删除的文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
  • shell脚本批量将文件复制到指定的文件夹下

    shell脚本批量将文件复制到指定的文件夹下
    由于线上文件比较多,选择特定的文件拿下线下进行语料标注,如果指定的文件数量太多,一个个复制就很麻烦。所以写一个shell脚本进行批
  • 在shell脚本中激活conda虚拟环境的几种方法

    在shell脚本中激活conda虚拟环境的几种方法
    在shell脚本中激活conda虚拟环境 常用命令行激活conda的env的命令有2种: 1 2 conda activate ENV_NAME source /home/zhaohuiyao/minconda3/bin/activate ENV_NAME 但是
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计