Linux文本处理工具
grep, egrep, fgrep:文本过滤工具(模式:pattern)工具
grep :基本正则表达式 -E,-F
egrep:扩展正则表达式 -G,-F
fgrep:不支持正则表达式。
正则表达式:由一类特殊字符及文本字符所编写的模式,其中有些字符不表示其字面意义,而是用于表示控制或通配的功能。
正则表达式分为两类:
基本正则表达式:BRE
扩展正则表达式:ERE
元字符:\(hello[[:space:]]\+\)\+
正则表达式通过一定的规则来筛选出自己想要找到的文件或目录;
grep:文本搜索工具,根据用户指定的“模式(过滤条件)”对目标文本逐行进行匹配检查;打印匹配到的行。
1.基本用法:
grep [options] PATTERN [FILE…]
grep默认是 `grep --color=auto’ 的别名
被筛选出的字符串会自动变色。
在/etc/passwd文件中筛选出带张三的项;
在etc中筛选出带有g字母的项;
2.grep的基本选项
-i:ignorecase,忽略字符的大小写;
grep 会区分大小写,i选项可以忽略大小写;
-o:仅显示匹配到的字符串本身;
-v, --invert-match:显示不能被模式匹配到的行;
-E:支持使用扩展的正则表达式元字符;
-q, --quiet, --silent:静默模式,即不输出任何信息;
-q选项执行后不会显示结果,用$?命令查看是0则说名执行成功,不是0则执行失败。
-A #:after
再查出所有结果后再继续往下查出n行。
··-B #:before
与上-A相反,往上查n行
··-C #:context
前后各n行
3.基本正则表达式元字符
字符匹配:
. :匹配任意单个字符;包含空格
[]:匹配指定范围内的任意单个字符;
[^]:匹配指定范围外的任意单个字符;
[:alnum:] 字母和数字, [:alpha:] 字母,
[:cntrl:],[:digit:] 数字,[:graph:],
[:lower:] 小写字母,[:print:] 可打印字符,
[:punct:],[:space:] 空格,[:upper:] 大写字母,和[:xdigit:]
匹配次数:用在要指定次数的时候,限制其出现次数,默认是贪婪模式;
:匹配其前面的字符任意次;0,1,多次;
.:匹配任意长度的任意字符
?:匹配其前面的字符0次或1次;即其前面的字符是可有可无的;
+:匹配其前面的字符1次或多次;即其面的字符要出现至少1次;
{m}:匹配其前面的字符m次;
{m,n}:匹配其前面的字符至少m次,至多n次;
{0,n}:至多n次
{m,}:至少m次
在基本正则表达式中,元字符 ?, +, {, |, (, 和 ) 丧失了它们的特殊意义;作为替代,使用加反斜杠的 (backslash) 版本 ?, +, {, |, (, 和 ) 。
位置锚定:
^ :行首锚定;用于模式的最左侧;
$ :行尾锚定;用于模式的最右侧;
^PATTERN$:用于PATTERN来匹配整行;
^ $:空白行;
^ [[:space:]]* $:空行或包含空白字符的行;
单词:非特殊字符组成的连续字符(字符串)都称为单词;
< 或 \b:词首锚定,用于单词模式的左侧;
> 或 \b:词尾锚定,用于单词模式的右侧;
<PATTERN>:匹配完整单词。