2.Linux中grep多个关键字“与”和“或”使用详解

avatar
作者
猴君
阅读量:0

1、Linux grep命令用于查找文件里符合条件的字符串    grep 命令非常常用,经常用于匹配文本字符

grep指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设grep指令会把含有范本样式的那一列显示出来

一、或(or)操作

1、使用选项 -E
grep -E 'a1|a2'filename    // 找出文件(filename)中包含a1或者包含a2的行

2、使用egrep
egrep 'a1|a2' filename     // 用egrep同样可以实现

3、使用选项 -e
使用grep -e 选项,只能传递一个参数。在单条命令中使用多个 -e 选项
grep -e a1 -e a2 filename  //使用-e选项实现

4、使用awk
awk '/a1|a2/' filename     // awk 的实现方式

二、与(and)操作

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

1、显示既匹配 pattern1 又匹配 pattern2 的行

grep pattern1 files | grep pattern2 

2、使用多个grep命令
grep "a1" filename | grep "a2"  //找出既匹配 a1 又匹配 a2 的行

其他情况

1、grep ‘字符串’     
cat manpath.config | grep 'MANPATH'       //匹配文件中包含 MANPATH 的那一行

2、grep -v ‘字符串’
cat manpath.config| grep -v 'MANPATH'   //匹配文件中不包含 MANPATH 的那一行

3、grep -E 同时匹配多个关键字–或关系

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

匹配 file.txt 中包含 word1 或 word2 或 word3 的行。 满足其中任意条件(word1、word2和word3之一)就会匹配。

4、同时匹配多个关键字–与关系

使用管道符连接多个 grep ,间接实现多个关键字的与关系匹配

grep word1 file.txt | grep word2 |grep word3    //必须同时满足三个条件(word1、word2和word3)才匹配。
 

5、使用grep关键字出现次数进行计数统计

模糊匹配

grep -o "keyword" filename |wc -l

精确匹配(以整个word 匹配)

grep -wo "keyword" filename |wc -l
 

6、包含关键字的行数(一行存在多个关键字,计数为1)

grep -c "keyword" filename
 

7、ls、grep、wc统计目录下文件及文件夹的个数

7.1 统计当前目录下文件的个数(不包括目录)

ls -l | grep "^-" | wc -l

7.2 统计当前目录下文件的个数(包括子目录)

ls -lR| grep "^-" | wc -l

7.3 查看某目录下文件夹(目录)的个数(包括子目录)

ls -lR | grep "^d" | wc -l

ls -l

长列表输出该目录下文件信息(注意这里的文件是指目录、链接、设备文件等),每一行对应一个文件或目录

ls -lR 

是列出所有文件,包括子目录

grep "^-"
过滤ls的输出信息,只保留一般文件,只保留目录是grep "^d"

wc -l
统计输出信息的行数,统计结果就是输出信息的行数,一行信息对应一个文件,所以就是文件的个数

    广告一刻

    为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!