您的位置:首页 > 运维架构 > Linux

linux命令之grep命令

2016-03-06 23:16 483 查看
grep命令是一个十分强大的文本搜索命令,它全面的搜索满足正则表达式文本内容并且可

以把对应的行以及行号打印出来

基本格式:
grep[选项][模式][文件或者目录]

[模式]是什么呢?模式就是要搜索的文本内容的正则表达式,当然也可以时最简单的最直接的文本。输出是什么呢,
一般的输出的是满足有所要搜索内容的所有行,但是根据[选项]内容不同,
也可以之输出文件名或者满足行数。

[选项]:

-n列出所有匹配的行,输出的行带上行标

-l只输出文件名

-r递归搜索,不仅搜当前目录,还有子目录

-w匹配整个词

-v:反向选择,亦即显示出没有'搜寻字符串'内容的那一行

-i:不区分大小写

此外--color=auto可以给出满足模式的文本上色。
[例子]
接下来,赶紧上例子啦!
为了方便看,蓝色的表示模式,红色的表示结果

1.查看size.c文件中包含return或者return0的行
melody@melody-HP-Compaq-dc7900-Small-Form-Factor:~/workspace$grep-nreturnsize.c
5:return0;
melody@melody-HP-Compaq-dc7900-Small-Form-Factor:~/workspace$grep -n"return 0"size.c
5:return0;
melody@melody-HP-Compaq-dc7900-Small-Form-Factor:~/workspace$grep -nreturn 0 size.c
grep:0:没有那个文件或目录
size.c:5: return0;

注意:当模式中有空格的时候一定要打””引起来,不然会出现没有那个文件或目录的错误

2.查看目录下包含return0的文件,只输出文件名
melody@melody-HP-Compaq-dc7900-Small-Form-Factor:~/workspace$grep-l"return
0"/home/melody/workspace/
grep:/home/melody/workspace/:是一个目录

melody@melody-HP-Compaq-dc7900-Small-Form-Factor:~/workspace$grep-r-l
"return
0"/home/melody/workspace/
/home/melody/workspace/lookhb.c
/home/melody/workspace/size.c
/home/melody/workspace/main.c
/home/melody/workspace/mainl.c

注意这个例子中,当为目录时,一定要加-r递归搜索

3.查看目录下包含return0的文件,输出文件名加相应的行:
melody@melody-HP-Compaq-dc7900-Small-Form-Factor:~/workspace$grep
-r "return 0" /home/melody/workspace/
/home/melody/workspace/lookhb.c: return0;
/home/melody/workspace/size.c: return0;
/home/melody/workspace/main.c: return0;
/home/melody/workspace/mainl.c: return0;

melody@melody-HP-Compaq-dc7900-Small-Form-Factor:~/workspace$grep
-r "return 0" /home/melody/workspace/ -n
/home/melody/workspace/lookhb.c:5:
return0;
/home/melody/workspace/size.c:5:return0;
/home/melody/workspace/main.c:17:
return0;
/home/melody/workspace/mainl.c:15:
return0;

接下来,上一些有正则表达式例子
总结一下:限定行首(^)/行尾字符($),限定一些特定的字符”..[..]..”,精确匹配(/),匹配重复字符(“*”)

melody@melody-HP-Compaq-dc7900-Small-Form-Factor:~/workspace$grep
-n ^
i/home/melody/workspace/size.c
2:intmain()

melody@melody-HP-Compaq-dc7900-Small-Form-Factor:~/workspace$grep
-n ^ /home/melody/workspace/size.c
1:#include<stdio.h>
2:intmain()
3:{
4: printf("%d\n",sizeof("abc"));
5: return0;
6:}
^i可以就这样写,也可以加单引号,注意是单引号!!

匹配特定的字符[]中满足其中之一就可以了。eg.
melody@melody-HP-Compaq-dc7900-Small-Form-Factor:~/workspace$grepp[ea]tsize.c
-n
4://pat;
5: //pet;

类比:
melody@melody-HP-Compaq-dc7900-Small-Form-Factor:~/workspace$grep[^A]size.c--color=always
#include<stdio.h>
intmain()
{
ABCDS;
//KO //pat;
//pet;
//hello;
printf("%d\n",sizeof("abc"));
return0;
}
melody@melody-HP-Compaq-dc7900-Small-Form-Factor:~/workspace$grep^Asize.c--color=always
ABCDS;

melody@melody-HP-Compaq-dc7900-Small-Form-Factor:~/workspace$grep
//.../ size.c --color=always
//KO
//pat;

//.../表示的是什么意思呢?就是以//字符开始的中间有三个其他任意字符(三个.),后面还接了个/的。

精确匹配:

melody@melody-HP-Compaq-dc7900-Small-Form-Factor:~/workspace$grep -n 'ab\{2\}'size.c
8:aaaaaaaaaabababababababbabaababa;
注意,一定要加引号。

melody@melody-HP-Compaq-dc7900-Small-Form-Factor:~/workspace$grep
-n ab* size.c -i
2:intmain()
4:-----ABCDS;
5:--haha;
6:ABabaaaab;
7:ab;
8:aaaaaaaaaabababababababbabaababa;
9://KO //pat;
12: printf("%d\n",sizeof("abc"));

ab*-i就是指的是以a开头,出现0次或者多次b的字符串,不区分大小写!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: