新闻资讯

/News and information

Linux grep常用方式

所属分类:企业新闻
点击量:103
发布时间:2024-03-23 18:50:22

一、或(or)操作

1、使用 \|

grep 'a1\|a2' filename     //找出文件(filename)中包含a1或者包含a2的行

2、使用选项 -E

grep -E 'a1|a2'filename    // 找出文件(filename)中包含a1或者包含a2的行

3、使用egrep

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

4、使用选项 -e

使用grep -e 选项,只能传递一个参数。在单条命令中使用多个 -e 选项

grep -e a1 -e a2 filename //使用-e选项实现

5、使用awk

awk '/a1|a2/' filename // awk 的实现方式

备注:推荐使用方法3

二、与(and)操作

1、使用 -E 'par1.*par2'

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

例1(其中两个pattern的顺序是指定的):

grep -E 'a1.*a2' filename

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

grep -E 'a1.*a2|a2.*a1' filename

2、使用多个grep命令

grep "a1" filename | grep "a2" //找出既匹配 a1 又匹配 a2 的行

三、非(not)操作

1、使用选项 grep -v

使用 grep -v 可以实现 NOT 操作。-v 选项用来实现反选匹配的( invert match)。如,可匹配得到除下指定pattern外的所有lines。

grep -v 'par1' filename

2、将NOT操作与其他操作联合起来,以此实现更强大的功能组合

示例(将得到:'a1或者a2,但是不是a3'的结果):

egrep 'a1|a2' filename | grep -v a3

四、其他操作

grep -i pattern files //不区分大小写地搜索,默认情况区分大小写;

grep -l pattern files //只列出匹配的文件名;

grep -L pattern files //列出不匹配的文件名;

grep -w pattern files //只匹配整个单词,而不是字符串的一部分(如匹配‘magic’,而不‘magical’);

grep -C number pattern files //匹配的上下文分别显示[number]行。

五、应用示例

1、列出同时包含这两个关键词(a1和a2)的文件及包含的次数

grep -l "a1" |xargs grep -c "a2"

2、查询关键字前后N行的日志

grep -10 ‘123’ test.log

或 grep -C 10 ‘123’ test.log

或 grep -A 10 -B 10 ‘123’ test.log

3、显示既匹配 ‘123’又匹配 ‘456’的行

grep ‘123’ test.log| grep ‘456’

4、查看test.log指定行号后的内容,比如50行

tail -n +50 test.log

5、查看test.log的第50行到100行

sed -n ‘50,100p’ test.log#记得p字母