联系我:新浪微博@阳光下的云朵2012或者zhangcaiyun_86#163.com(将#换成@)
读书笔记1——linux常用命令之grep命令的使用
上一篇 /
下一篇 2013-05-13 14:58:06
/ 个人分类:职业发展
linux grep
卷一.作用
Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。
卷二.格式
grep [options]
卷三.主要参数
1)[options]主要参数:
-c:只输出匹配行的计数。
-I:不区分大 小写(只适用于单字符)。
-h:查询多文件时不显示文件名。
-l:查询多文件时只输出包含匹配字符的文件名。
-n:显示匹配行及 行号。
-s:不显示不存在或无匹配文本的错误信息。
-v:显示不包含匹配文本的所有行。
2)pattern正则表达式主要参数:
\: 忽略正则表达式中特殊字符的原有含义。
^:匹配正则表达式的开始行。
$: 匹配正则表达式的结束行。
\<:从匹配正则表达 式的行开始。
\>:到匹配正则表达式的行结束。
[ ]:单个字符,如[A]即A符合要求 。
[ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。
。:所有的单个字符。
* :有字符,长度可以为0。
卷四.grep命令使用简单实例
$ grep 'test' d*
显示所有以d开头的文件中包含test的行。
$grep 'test'aa bb cc
显示在aa bb cc 文件中匹配test的行。
$grep '[a-z]\{5\}' aa
显示所有包含每个字符串至少有5个连续小写字符的字符串的行。
$ grep ‘w\(es\)t.*\1′ aa
如果west被匹配,则es就被存储到内存中,并标记为1,然后搜索任意个字符(.*),这些字符后面紧跟着 另外一个es(\1),找到就显示该行。如果用egrep或grep -E,就不用”\”号进行转义,直接写成’w(es)t.*\1′就可以了。
卷五 grep命令使用复杂实例
1.用'grep'搜索文本文件
如果您要在几个文本文件中查找一字符串,可以使用'grep’命令。'qrep’在文本中搜索指定的字符串。
假设在'/usr/src/linux/Documentation'目录下搜索带字符串'magic’的文件:
$ grep magic /usr/src/linux/Documentation/*
sysrq. txt:* How do I enable the magic SysRQ key?
sysrq. txt:* How do I use the magic SysRQ key?
(即 'sysrq. txt’包含该字符串,讨论的是SysRQ的功能)
默认情况下,'grep’只搜索当前目录。如果此目录下有许多子目录,‘grep’会以如下形式列出:
grep:sound: Is a directory
这可能会使'grep'的输出难于阅读。这里有两种解决办法:
1)明确要求搜索子目录:grep -r
2)忽略子目录:grep -d skip
如果,预料到有许多输出,可以通过 管道 将其转到 'less'上阅读:
$ grep magic /usr/src/linux/Documentation/* | less
这样就可以方便的阅读。
有一点需要注意,你必须提供一个文件过滤方式(搜索全部文件的话用*)。如果忘记了,'grep’会一直等着,直到该程序被中断。如果你遇到了这样的情况,按<CRTL c>,然后再试。
具体命令行参数在此略。
2.搜索字符串
命令格式:
grep string filename
寻找字符串的方法很多,比如说我想找所有以M开头的行,此时必须引进pattern的观念。以下是一些简单的口例,以及说明:
^M 以M开头的行,^表示开始的意思
M$ 以M结尾的行,$表示结束的意思
^[0-9] 以数字开始的行,[]内可列举字母
^[124ab]以1,2,4,a或b开头的行
由于没有一一跑过,如有问题,欢迎指正~~
收藏
举报
TAG: