首页 > 系统相关 >Linux命令-Grep逻辑:OR、AND、NOT

Linux命令-Grep逻辑:OR、AND、NOT

时间:2024-07-10 14:32:40浏览次数:20  
标签:逻辑 grep 使用 Sales pattern2 Manager Linux employee Grep

Grep 的 OR, AND 和NOT

 

grep这个强大的文本处理工具,在linux的命令行中几乎随时要使用,被用来过滤一些关键词。要过滤的关键词有时是好几个,关键词之间就有了OR, AND 和NOT各种关系,所以有必要了解grep的OR, AND 和NOT是如何操作的

在grep中,有等同于OR和NOT操作符的选项,但没有grep AND操作符,可以使用模式来模拟AND。

以下是下面示例中使用的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,使用以下4种方法之一。推荐第3种用于grep OR操作符。

1. 使用 \|

如果使用grep命令而没有任何选项,则需要使用\|来分隔多个模式以进行或条件。

grep 'pattern1\|pattern2' filename

例如,从employee.txt文件中grep出Tech或Sales。如果在管道符前没有加上反斜杠,则下面的命令将不起作用。

$ 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选项用于扩展正则表达式。如果使用带有-E选项的grep命令,则只需使用|来分隔多个模式以进行或条件。

grep -E 'pattern1|pattern2' filename

例如,从employee.txt文件中grep出Tech或Sales。只需使用|来分隔多个OR模式。

3. ★使用 egrep

egrep与“grep -E”完全相同。因此,使用egrep(不带任何选项)并分隔多个模式以进行或条件。

egrep 'pattern1|pattern2' filename

例如,从employee.txt文件中grep出Tech或Sales。只需使用|来分隔多个OR模式。

4. 使用 grep -e

使用grep -e选项可以传递一个参数。使用单个命令中的多个-e选项以使用多个模式进行或条件。

grep -e pattern1 -e pattern2 filename

例如,从employee.txt文件中grep出Tech或Sales。使用多个-e选项与grep一起使用多个OR模式。

 

二、Grep AND

1.使用-E ‘pattern1.*pattern2 ’

grep中没有AND操作符。但是,您可以使用grep -E选项模拟AND。

grep -E 'pattern1.*pattern2' filename
grep -E 'pattern1.*pattern2|pattern2.*pattern1' filename
例如,从employee.txt文件中grep出同时包含“Dev”和“Tech”的所有行(顺序相同)。

$ grep -E 'Dev.*Tech' employee.txt
200 Jason Developer Technology $5,500
例如,从employee.txt文件中grep出同时包含“Manager”和“Sales”的所有行(任意顺序)。

$ grep -E 'Manager.*Sales|Sales.*Manager' employee.txt
2.使用多个grep命令以|分隔来模拟AND场景。

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

 

三、Grep NOT

使用grep -v

使用grep -v可以模拟NOT条件。-v选项用于反向匹配,即匹配除给定模式之外的所有行。

例如,显示除了包含关键字“Sales”之外的所有行。

$ 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://blog.csdn.net/chrshh2006/article/details/138127290

标签:逻辑,grep,使用,Sales,pattern2,Manager,Linux,employee,Grep
From: https://www.cnblogs.com/iSun520/p/18293985

相关文章

  • asp.net webform在Linux上部署--jexus
    JexusWebServer官网什么是JexusJexus是“JexusWebServer”的常用简称,也可简称为“JWS”。Jexus是一款运行于Linux环境的具有高安全性、高可靠性的高性能WEB服务器和负载均衡网关服务器。除了具备通用WEB服务器所必备的功能外,Jexus还能直接支持各类Asp.NetWEB应用,并以特有......
  • Linux使用tcpdump命令抓包并使用wireshark分析常见的场景和解读
    使用tcpdump抓包并使用Wireshark分析网络流量是一项重要的网络管理和故障排除技能。以下是一个简单的步骤指南,涵盖了从抓包到分析的常见场景。抓包安装tcpdump在大多数Linux发行版上,您可以使用包管理器安装tcpdump。例如,在基于Debian的系统上:sudoapt-getin......
  • Linux安装JDK详细教程
    Linux安装JDK详细教程(图文教程)这里介绍两种方式:yum安装方式和手动安装1、yum安装1.1查看JDK版本,找到你想要安装的JDK版本,这里以JDK1.8为例输入命令:yum-ylistjava*1.2安装JDK1.8输入命令:yuminstall-yjava-1.8.0-openjdk.x86_64没权限执行这行:sudoyuminstall......
  • 关于Linux发行版的心得体会
    这是一篇没有技术的博客,主要讲讲捣鼓迷你主机时装linux系统装各种软件服务时的感受。一开始选择的是Ubuntu24.04LTS,不得不说Ubuntu很漂亮,apt的包管理方式也挺舒服。不习惯的一点su命令切换逻辑好像跟其他发行版不一样,需要给用户设置root密码后才可以,似乎是为了安全的管理权限,Ubun......
  • 在Linux中,如何保存当前磁盘分区的分区表?
    在Linux中,可以通过几种不同的方法来保存当前磁盘分区的分区表。这包括使用dd命令、gdisk工具和利用fdisk命令的不同选项。以下是详细步骤和方法:使用dd命令备份整个分区表MBR分区表备份:对于主引导记录(MBR)类型的分区表,可以使用dd命令将整个MBR备份到一个文件中。MBR包含分区......
  • 在Linux中,符号链接与硬链接有何区别?
    在Linux中,符号链接(SymbolicLink)与硬链接(HardLink)是两种不同类型的文件链接方式,它们之间存在多个显著的区别。以下是详细的分析:1.定义与性质符号链接:符号链接是一个特殊的文件,它包含指向另一个文件或目录的路径。可以将符号链接看作是一个快捷方式或别名。符号链接具有自己......
  • 在Linux中,系统的开机启动顺序是什么?
    在Linux中,系统的开机启动顺序是一个复杂但有序的过程,它涉及从硬件自检到用户登录的多个阶段。以下是Linux系统开机启动顺序的详细说明:一、BIOS自检与启动设备选择加载BIOS:BIOS(基本输入输出系统)是计算机启动时的第一个软件。它负责在硬件和软件之间提供接口,进行开机自检(POST),检......
  • 在Linux中,怎么把脚本添加到系统服务里,即用 service 来调用?
    在Linux中,将脚本添加为系统服务,使其可以通过service命令进行管理,通常涉及以下步骤:编写启动脚本:创建一个启动脚本,该脚本将被Systemd或其他初始化系统用来启动、停止和重启你的应用程序或服务。例如,创建一个名为your_service的脚本,并赋予执行权限:#!/bin/bash#你的启动停止逻......
  • 在Linux中,FTP 的主动模式和被动模式是什么?有何区别?
    在Linux中,FTP(FileTransferProtocol,文件传输协议)的主动模式和被动模式是FTP协议用于在两台计算机之间传输文件时采用的两种不同工作模式。这两种模式的主要区别在于数据连接(即用于文件传输的连接)的发起和建立方式。一、主动模式(PORT模式)定义与工作原理:主动模式是指FTP客户端......
  • Linux: System call
    参考:https://blog.csdn.net/weixin_41028621/article/details/134542010?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-2-134542010-blog-130766392.235%5Ev43%5Epc_blog_bottom_relevance_ba......