首页 > 代码库 > 我的朗科运维第六课(1)
我的朗科运维第六课(1)
文本处理三剑客
grep系:grep、egrep、fgrep,文本搜索工具,居于“PATTERN”对于给定的文本进行模糊搜索。
sed:tream EDitor,流编辑器,行编辑器,文本编辑工具;
awk:gawk--GNU awd,文本格式化工具,文本报告生成器,文本处理的编辑语言;
grep系:grep、egrep、fgrep
grep:Global search REgular expression and Print out the line.
利用增则表达式进行全局搜索并将匹配的行显示出来;
格式:grep [OPTIONS] PATTERN [FILE...]
PATTERN:过滤条件,是由正则表达式元字符以及没有特殊含义的文本字符组成。
正则表达式的元字符:会被正则表达式引擎解释为特殊含义;pcre--perl语言的正则表达式引擎; 其中正则表达式分两中:
一、基本的正则表达式:BRE;
二、扩展的正则表达式:ERE;
grep默认仅支持基本正则表达式;
egrep默认仅支持扩展正则表达式;
fgrep默认不开启正则表达式;
文本字符:只具备字符表面含义的那些字符;
常用选项:
-i,--ignore-case:忽略文本字符的大小写;
-v,--invert-match:方向匹配;最终显示的结果是PATTERN不能匹配的行;
-c,--count:计数,统计匹配PATTERN的所有行数;
-o,--only-吗thing:关闭贪婪模式,仅显示PATTERN能够匹配的内容;
-q,--quiet,--silent:安静模式,不输出任何匹配结果;
--color[=WHEN],--colour[=WHEN]:将匹配PATTERN的内容以特殊颜色高亮显示;
-E,--extended-regexp:扩展的正则表达式,grep -E相当于egrep;
-F,--fixed-strings,--fixed-regexp:grep -F相当于fgrep
-G,--basic-regexp:基本的正则表达式,egrep -G相当于grep
-P,--prel-regecp:使用PCRE(Perl Regular Expression)引擎;
-A NUM,--after-context=NUM:在显示匹配PATTERN的行的同时显示起后面的NUM行;
-B NUM, --before-context=NUM:在显示匹配PATTERN的行的同时显示起前面的NUM行;
-C NUM, -NUM, --context=NUM:在显示匹配PATTERN的行的同时显示起前后各NUM行;
PATTERN:
正则表达式元字符:
基本的正则表达式元字符:
GLOBBING-----简化版的正则表达式:[] ? *
字符匹配:
.:匹配任意单个字符
[]:匹配指定范围内的任意单个字符;
[^]:匹配指定范围以外的任意单个字符;
下列所有的字符集都可以放置于[]之中用于匹配单个字符:
[:lower:]、[:upper:]、[:alpha:]、[:digit:]、[:space:]、[:alnum:]、[:punct:]、[:blank:]
[:xdigit:]:所有的十六进制数字;
a-z:所有的小写字母
A-Z:所有的大写字母
0-9:标识所有的十进制数字
次数匹配:该类字符之前的那个字符可以出现的次数;
*:其前面的字符可以出现任意次(0次,1次或多次);
\?:其前面的字符可有可无(0次或1次);
\+:其前面的字符至少出现一次(1次或多次);
\{m\}:其前面的字符必须出现m次;
\{m,n\}:其前面的字符至少出现m次,至多出现n次;(m<n)
\{,n\}:其前面的字符至少出现0次,至多出现n次;
\{m,\}:其前面的字符至少出现m次,多多益善;
在正则表达式中,表示任意长度任意字符的方式:.*
位置锚定字符:
行锚定:
行首锚定:^
行尾锚定:$
字锚定:
字首锚定:\<或\b
字尾锚定:\>或\b
注意: \b:旧版本中的锚定方法,建议不使用:
对于正则表达式引擎来说,字是由非特殊字符组成的连续字符串;
我的朗科运维第六课(1)