linuxtput命令的简单介绍( 四 )


[:alnum:]
文字数字字符
[:alpha:]
文字字符
[:digit:]
数字字符
[:graph:]
非空字符(非空格、控制字符)
[:lower:]
小写字符
[:cntrl:]
控制字符
[:print:]
非空字符(包括空格)
[:punct:]
标点符号
[:space:]
所有空白字符(新行 , 空格,制表符)
[:upper:]
大写字符
[:xdigit:]
十六进制数字(0-9,a-f , A-F)
命令选项
编辑
-?
同时显示匹配行上下的?行,如:grep -2 pattern filename同时显示匹配行的上下2行 。
-a, --text
等价于匹配text,用于(Binary file (standard input) matches)报错
-b,--byte-offset
打印匹配行前面打印该行所在的块号码 。
-c,--count
只打印匹配的行数,不显示匹配的内容 。
-f File , --file=File
从文件中提取模板 。空文件中包含0个模板,所以什么都不匹配 。
-h,--no-filename
当搜索多个文件时,不显示匹配文件名前缀 。
-i,--ignore-case
忽略大小写差别 。
-o, --only-matching
只显示正则表达式匹配的部分 。(show only the part of a line matching PATTERN)
-q , --quiet
取消显示 , 只返回退出状态 。0则表示找到了匹配的行 。
-l,--files-with-matches
打印匹配模板的文件清单 。
-L,--files-without-match
打印不匹配模板的文件清单 。
-n,--line-number
在匹配的行前面打印行号 。
-s,--silent
不显示关于不存在或者无法读取文件的错误信息 。
-v , --revert-match
反检索,只显示不匹配的行 。
-w,--word-regexp
如果被\和\引用,就把表达式做为一个单词搜索 。
-R, -r, --recursive
递归的读取目录下的所有文件,包括子目录 。比如grep -R 'pattern' test会在 test 及其子目录下的所有文件中,匹配 pattern 。
-V,--version
显示软件版本信息 。
-A6
查找某些字符的内容,并下延伸6行
-B6
查找某些字符的内容,并上延伸6行
-C1
查找某些字符的内容,并上和向下各延伸1行
这几行后面的数字直接影响延伸数量,并以--符号分割搜索行的结果
实例
编辑
要用好grep这个工具 , 其实就是要写好正则表达式,所以这里不对grep的所有功能进行实例讲解,只列几个例子,讲解一个正则表达式的写法 。
$ ls -l | grep '^a'
通过管道过滤ls -l输出的内容,只显示以a开头的行 。
$ 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'就可以了 。
注意
编辑
在某些机器上 , 要使用-E参数才能够进行逻辑匹配(详见下)
grep "a|b" (匹配包含字符样式为"a|b"的行)
grep -E "a|b" (匹配包含字符样式为"a"或"b"的行)
man grep里面关于-E参数的说明是
-E
Treats each pattern specified as an extended regular expression (ERE). A NULL value for the ERE matches every line.
Note: The grep command with the -E flag is the same as the egrep command, except that error and usage messages are different and the -s flag functions differently.

推荐阅读