Linux基础系列(一)grep文本搜索工具

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

wKioL1aA7XzRlaFvAABEjxAlSQg539.png


实例2、查询文件“/tmp/testin.sh”里关键字“Linux”不区分大小写的全部行

命令:grep -v -n "Linux" /tmp/testin.sh

wKioL1aA5jjAOhK5AAA9NOARD9s711.png


实例3、显示包含大小写“Linux”关键字的全部行,并计算总数

命令:grep -v -n -c "Linux" /tmp/testin.sh

wKioL1aA5oaBR3wCAAAOHJVKJAo806.png


正则表达式:是一类字符所书写的模式,其中许多字符不表示其字面意义,而是表达控制或通配等功能。

 

正则表达式元字符,其中:

 

字符匹配:

“.”  : 匹配任意单个字符,如”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”,表明能够是grepep

“\{m\}” : 重复m次,如”grep\{2\}”,匹配包含至少2”grep”的行;

“\{m,\}”: 重复字符至少m次,如”grep\{2,\}”匹配至少有2grep的行;

“\{m,n\}”: 重复字符至少m次,至多n次,如”grep\{2,3\}”匹配23grep的行;

 

POSIX字符:

[:alnum:] :文字数字字符;

[:alpha:] : 文字字符;

[:digit:] : 数字字符;

[:graph:] : 非空字符(非空格、控制字符);

[:lower:] : 小字字符;

[:print:] : 非空字符,包括空格;

[:space:] : 全部空白字符(新行、空格、制表符);

[:upper:] : 大写字符;

[:punct:] : 标点符号;


实例4、显示文件“/tmp/test.grep”中单词为“Grep”、“grep

命令:grep –n “[Gg]rep” /tmp/test.grep

wKiom1aA5zyDryLuAABV82Vn9t0706.png


实例5、显示文件“/tmp/test.grep”中以“grep”开头的行

命令:cat /tmp/test.grep | grep ^grep

wKiom1aA6sGB4wyBAAAk5pdA23Y817.png


实例6、显示文件“/tmp/test.grep”中以“grep”结尾的行

wKiom1aA60LCl-1KAAAlPWfcNJI219.png


实例7、显示/tmp/test.grep中以致少一个空白字符结尾的行;

命令:grep -n "[[:space:]]\{1,\}$" /tmp/test.grep

wKioL1aA6_PyfN_wAABCs9OK8VU104.png


待续!

相关文章
相关标签/搜索