欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

Linux 使用grep筛选多个条件 and or 并且 或者 与操作 或操作 匹配与 匹配或 有大用 有大大用

Linux 使用grep筛选多个条件


grep -e aaa -e bbb  file.txt  # 在file.txt中搜含 aaa 或者 bbb 的行

grep "aa\|bb"  file.txt     # 在file.txt中搜含 aa 或者 bb 的行

grep -E "word1|word2|word3"   file.txt     # 在file.txt中搜含 word1或者 word2 或者 word3 的行

grep "aa"  file.txt | grep "bb"      在file.txt中搜含 aa 并且  bb 的行      

cat file.txt | grep "aa" | grep "bb"     在file.txt中搜含 aa 并且  bb 的行      


-E 表示扩展的正则表达式image.png

grep 同时满足多个关键字和满足任意关键字

 

① grep -E "word1|word2|word3"   file.txt

   满足任意条件(word1、word2和word3之一)将匹配。

② grep word1 file.txt | grep word2 |grep word3

   必须同时满足三个条件(word1、word2和word3)才匹配。

不说废话, 例如需要排除 abc.txt  (不包含)中的  mmm   nnn  

-v 表示 排除 不包含

grep -v 'mmm\|nnn' abc.txt 

但是这样还是很多,需要从这几条信息里面去找到所需要的 ip 地址,我们可能想到了使用 grep -v 屏蔽掉 inet6,结果如下:

  1. bash-3.2# ifconfig | grep inet | grep -v inet6
  2. inet 127.0.0.1 netmask 0xff000000
  3. inet 10.60.104.38 netmask 0xfffffe00 broadcast 10.60.105.255

 


来自 https://blog.csdn.net/weixin_42181200/article/details/80909027


Linux: grep多个关键字“与”和“或”

1、或操作

grep -E '123|abc' filename  // 找出文件(filename)中包含123或者包含abc的行
egrep '123|abc' filename    // 用egrep同样可以实现
awk '/123|abc/' filename   // awk 的实现方式2、与操作

2、与操作

grep pattern1 files | grep pattern2 //显示既匹配 pattern1 又匹配 pattern2 的行。

3、其他操作

grep -i pattern files   //不区分大小写地搜索。默认情况区分大小写,
grep -l pattern files   //只列出匹配的文件名,
grep -L pattern files   //列出不匹配的文件名,
grep -w pattern files  //只匹配整个单词,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’),
grep -C number pattern files //匹配的上下文分别显示[number]行,

来自 https://www.cnblogs.com/zhaoyingjie/p/8976718.html


Linux grep 同时满足多个条件


一 或操作

 grep -E '123|abc' filename  // 找出文件(filename)中包含123或者包含abc行
 
 egrep '123|abc' filename    // 用egrep同样可以实现
 
 awk '/123|abc/' filename   // awk 的实现方式

二 与操作

 grep pattern1 files | grep pattern2 :显示既匹配 pattern1 又匹配 pattern2 的行。

1.grep命令本身不提供AND功能。但是,使用 -E 选项可以实现AND操作。

grep -E 'pattern1.*pattern2' filename

grep -El 'pattern1.*pattern2' * (会把包含这两个条件的文件查询出来)

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

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

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

3(两个pattern的顺序不是固定的,可以是乱序的)

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


来自  https://blog.csdn.net/qq_24913485/article/details/84840399


Linux 使用grep筛选多个条件及grep常用过滤命令

 更新时间:2018年07月04日 10:59:22   投稿:mrr    我要评论

这篇文章主要介绍了Linux 使用grep筛选多个条件及grep常用过滤命令,需要的朋友可以参考下

cat log.txt | grep 条件; 
cat log.txt | grep 条件一 | grep 条件二; 
cat log.txt | grep 条件一 | grep 条件二 | grep 条件三;

grep 条件一 log.txt | grep 条件二 | grep 条件三;

不说废话, 例如需要排除 abc.txt 中的  mmm   nnn

grep -v 'mmm\|nnn' abc.txt

但是这样还是很多,需要从这几条信息里面去找到所需要的 ip 地址,我们可能想到了使用 grep -v 屏蔽掉 inet6,结果如下:

1
2
3
bash-3.2# ifconfig | grep inet | grep -v inet6
  inet 127.0.0.1 netmask 0xff000000
  inet 10.60.104.38 netmask 0xfffffe00 broadcast 10.60.105.255

下面看下linux grep常用过滤命令

过滤的内容可以是一个词组等, 需要用引号包裹

1. 获取文件中的关键字key:  cat fileName | grep "key"

2. 获取文件中的某个关键字key1, key2, key3: cat fileName | grep -E "key1|key2|key3"

3.获取文件中的多个关键字,同时满足: cat fileName | grep key1 | grep key2| grep key3

4. 忽略文件中的某个关键字, 需要转义"|":cat fileName | grep -v "key1\|key2\|key3"

总结

以上所述是小编给大家介绍的Linux 使用grep筛选多个条件及grep常用过滤命令,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

来自 https://www.jb51.net/article/143144.htm


Linux 使用grep筛选多个条件


cat log.txt | grep 条件; 
cat log.txt | grep 条件一 | grep 条件二; 
cat log.txt | grep 条件一 | grep 条件二 | grep 条件三;


来自  https://blog.csdn.net/Alger_magic/article/details/52152519



grep -v、-e、-E

2字数 613阅读 92,284

概述

在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  
  1. 使用选项 -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  
  1. 使用 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  
  1. 使用选项 -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  
  1. 使用多个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  
  1. 可以将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

来自   https://www.jianshu.com/p/4ec50fdaf388


普通分类: