本文共 2116 字,大约阅读时间需要 7 分钟。
功能说明:查找文件里符合条件的字符串。 语 法:grep [-abcEFGhHilLnqrsvVwxy] [-A<显示列数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范 本样式>][-f<范本文件>][--help][范本样式][文件或目录...] 如果要在一个或几个文本文件中查找一字符串,可以使用‘grep’命令。 grep pattern filename grep pattern filename1 filename2 假设正在‘/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? 默认情况下,‘grep’只搜索当前目录。如果此目录下有许多子目录时, 明确要求搜索子目录:grep -r 或明确忽略子目录:grep -d skip 结果等同于 默认情况 当然,如果预料到有许多输出,可以通过 管道 将其转到‘less’上阅读: $ grep magic /usr/src/linux/Documentation/* | less 这样,就可以更方便地阅读。 命令行参数: grep -i pattern files :不区分大小写地搜索。默认情况区分大小写, grep -n pattern files: 打印匹配的行并追加行号. grep -v pattern files 打印不包含pattern的行. grep -l pattern files :只列出匹配的文件名, grep -L pattern files :列出不匹配的文件名,注意,对于grep -L pattern ./* , 假如当前子目录mydir中含有符合匹配条件的a.txt,但列不匹配文件名时却有mydir; 如果改为grep -L -r pattern ./* 才不会列出mydir. grep -w pattern files :只匹配整个单词,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’), grep -C number pattern files :匹配的上下文分别显示[number]行, grep 'pattern1\| pattern2' files :显示匹配 pattern1 或 pattern2 的行,注意, 要双引号或单引号,以及反斜杠。 grep pattern1 files | grep pattern2 :显示既匹配 pattern1 又匹配 pattern2 的行。 正则表达式 ^ 锚定行的开始 如:'^grep'匹配所有以grep开头的行。 $ 锚定行的结束 如:'grep$'匹配所有以grep结尾的行。
.
匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。 * 匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行。 .*一起用代表任意字符。 [] 匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。 [^] 匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。 (..) 标记匹配字符,如'(love)',love被标记为1。 \< 锚定单词的开始, \> 锚定单词的结束,如'grep>'匹配包含以grep结尾的单词的行。 x'\{m\}' 重复字符x,m次,如:'0{5}'匹配包含5个o的行。 注意, 要双引号或单引号,以及反斜杠。 x'\{m,\}' 重复字符x,至少m次,如:'o{5,}'匹配至少有5个o的行。 x'\{m,n\}' 重复字符x,至少m次,不多于n次,如:'o{5,10}'匹配5--10个o的行。 例子:grep '[A-Z]...[0-9]' file 包含五个字符,以大写开头, 和一个数字结尾的行. grep "$LOGNAME" file 包含变量内容的行, 注意必须用双引号, 单引号则无法引用变量. 结合find和grep -print :表明find命令应输出其搜索到的和标准相匹配的文件名 # find -name "*.txt" -print -exec grep test {} \; grep test {} \; :-exec参数的一部分.每次找到和-name参数中指定的条件相匹配的文件时,用来搜索单词test的grep命令将被执行。 {} :参数告诉find命令每次执行-exec部分的命令时插入匹配文件的完整路径和文件名。 \; :表示find每次找到一个匹配文件时其所执行的-exec部分的命令结束。 也可以将-print去掉。 转载地址:http://dymum.baihongyu.com/