Mark: 本系列博文只是记录做者在Linux学习过程当中的点点滴滴,新手可能参考,高手们就略过吧!!!git
Linux学习总结:grep文本搜索工具正则表达式
功能:根据用户指定的文本模式(搜索条件)对目标文件进行逐行搜索,并把匹配的行打印出来,它的全称为“Global Regular Expression Print”,全局正则表达式,它默认是开放给全部用户。ide
语法格式:Grep [option] pattern file工具
Option:命令选项,具体包含:学习
-v: --revert-match 反向选取,显示不包含匹配文件的全部行;spa
-i: --ignore-case 忽略字符大小写;3d
-c: --count 计算符合样式的列数regexp
-E: --extended-regexp 支持使用正则表达式;blog
-A: --after-context 除了显示符合范本样式的列以外,并显示该行以后的内容get
-B: --before-context除了显示符合范本样式的列以外,并显示该行以前的内容
-C: --context除了显示符合范本样式的列以外,并显示该行以前后的内容
-n: --line-number 在显示符合样式的那一行以前同时标记出该行的列数编号;
实例1、显示文件“/tmp/testin.sh”里面不包含“Linux”的全部行
命令:grep –v–n “Linux” /tmp/testin.sh
实例2、查询文件“/tmp/testin.sh”里关键字“Linux”不区分大小写的全部行
命令:grep -v -n "Linux" /tmp/testin.sh
实例3、显示包含大小写“Linux”关键字的全部行,并计算总数
命令:grep -v -n -c "Linux" /tmp/testin.sh
正则表达式:是一类字符所书写的模式,其中许多字符不表示其字面意义,而是表达控制或通配等功能。
正则表达式元字符,其中:
字符匹配:
“.” : 匹配任意单个字符,如”grep.p”匹配grep后接一个任意字符;
“[]” : 匹配指定范围内的任意个字符,如”[Gg]rep”匹配Grep 和grep;
“[^]” : 匹配不在指定范围内的任意个字符,如”[^a-z]grep”匹配不包含”a-z”的字母开头,紧接着grep;
位置锚定:
“^” : 行首定位符,”^grep”匹配全部以grep开头的行;
“$” : 行尾定位符,”grep$”匹配全部以 grep结尾的行;
“^$”: 空白行;
“\<”: 锚定单词的开始,如:”\<grep”匹配包含以”grep”开头的单词的行;
“\>”:锚定单词的结束,如:”grep\>”匹配包含以”grep”结尾的单词的行;
次数匹配:
“*” : 匹配零个或多个字符,如”*grep”匹配全部一个或者多个空格后接着grep的行;
“.*” : 匹配任意字符;
“\?” : 零次或者壹次,前面的字符无关紧要,如”gr\?ep”,表明能够是grep,ep;
“\{m\}” : 重复m次,如”grep\{2\}”,匹配包含至少2个”grep”的行;
“\{m,\}”: 重复字符至少m次,如”grep\{2,\}”匹配至少有2个grep的行;
“\{m,n\}”: 重复字符至少m次,至多n次,如”grep\{2,3\}”匹配2至3个grep的行;
POSIX字符:
[:alnum:] :文字数字字符;
[:alpha:] : 文字字符;
[:digit:] : 数字字符;
[:graph:] : 非空字符(非空格、控制字符);
[:lower:] : 小字字符;
[:print:] : 非空字符,包括空格;
[:space:] : 全部空白字符(新行、空格、制表符);
[:upper:] : 大写字符;
[:punct:] : 标点符号;
实例4、显示文件“/tmp/test.grep”中单词为“Grep”、“grep”
命令:grep –n “[Gg]rep” /tmp/test.grep
实例5、显示文件“/tmp/test.grep”中以“grep”开头的行
命令:cat /tmp/test.grep | grep ^grep
实例6、显示文件“/tmp/test.grep”中以“grep”结尾的行
实例7、显示/tmp/test.grep中以致少一个空白字符结尾的行;
命令:grep -n "[[:space:]]\{1,\}$" /tmp/test.grep
待续!