2.Linux中grep多个关键字“与”和“或”使用详解
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 统计输出信息的行数,统计结果就是输出信息的行数,一行信息对应一个文件,所以就是文件的个数