grep及正则表达式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了grep及正则表达式相关的知识,希望对你有一定的参考价值。
文本查找的需要:grep,egrep,fgrep
grep:根据模式搜索文本,并将符合模式的文本行显示出来
使用基本正则表达式定义的模式来过滤文本的命令
Pattern:模式,文本字符和正则表达式的元字符组合而成匹配条件
# grep [OPTIONS] PATTERN [FILE...]
-i:忽略大小写
-v:反向查找,显示没有被模式匹配到的行
-o:只显示被模式匹配到的字符串
-E:使用扩展正则表达式---------------------grep -E = egrep
-F:fast-----------------------------------grep -F = fgrep(fgrep不支持正则表达式)
-A n:匹配所要匹配的那一行和其后的n行
-B n:匹配所要匹配的那一行和其前的n行
-C n:匹配所要匹配的那一行和其后以及其前的n行
正则表达式:REGular EXPression,REGEXP贪婪模式:尽可能长的匹配
Basic REGEXP:基本正则表达式
元字符:
.:匹配任意单个字符
[]:匹配指定范围内的任意单个字符
[^]:匹配指定范围外的任意单个字符
字符集合:[[:space:]]等
匹配次数(贪婪模式):
*:匹配其前面的字符任意次(0/n)
.*:任意长度的任意字符
\?:匹配其前面的字符1次或0次(0/1)
\+:匹配其前面的字符1次或多次(1/n)-------------扩展正则表达式
\{m,n\}:匹配其前的字符至少m次,至多n次
位置锚定:
^:锚定行首,此字符后面的任意内容必须出现在行首
$:锚定行尾,此字符前面的任意内容必须出现在行尾
^$:空白行
单词锚定:
\b:其前或其后的任意字符必须作为单词的首部或尾部出现
\w:匹配任何字类字符(字母、数字)
\W:匹配任何非字类字符(各种标点、符号)
分组:
\( ..\):将括号内的字符看做一个整体
后向引用:
\1:引用第一个左括号以及与之对应的右括号所包含的所有内容(\n...)
Extendend REGEXP:扩展正则表达式(不需要转义符\)
字符匹配:.、[]、[^]
次数匹配:*、?、+、{m,n}
位置锚定:^、$、\b
分组:()、\1(\n)
或者:|
sed(流编辑器)基本用法:
sed:Stream EDitor
行编辑器(全屏编辑器)
sed:模式空间
默认不编辑原文件,仅对模式空间中的数据做处理;而后,处理结束后,将模式空间打印至屏幕
# sed "AddressCommand" file...
-n:静默模式,不在默认显示模式空间中的内容
-i:直接修改源文件
-e SCRIPT -e SCRIPT:可以同时执行多个脚本
-f /PATH/TO/SED_SCRIPT:/PATH/TO/SED_SCRIPT保存所要执行的脚本
# sed -f /path/to/sed_script FILE
-r:使用扩展正则表达式
Address:
Startline,Endline
/RegExp/:/^root/
/pattern1/,/pattern2/:第一次被模式1匹配到的行开始至第一次被模式2匹配到的行结束
LineNumber:指定的行
Startline,+N:从startline开始,向后的N行
command:
d:删除符合条件的行
p:显示符合条件的行
a \string:在指定的行后面追加新行,内容为string
\n:换行
i \string:在指定的行前面添加新行,内容为string
r FILENAME:将Address指定的文件的内容/行添加至符合条件的行数之后,用于合并文件
w FILENAME:将Address指定范围内的内容/行另存至指定的文件中
s/pattern/string/:查找每行中pattern并替换为string,默认只替换每行中第一次被模式匹配到的字符串(s///也可写为:s###、[email protected]@@等)
加修饰符:
g--全局替换
i--忽略字符大小写
\(\)、\1、\2、...、\n
&:同\1后向引用的作用一样
以上是关于grep及正则表达式的主要内容,如果未能解决你的问题,请参考以下文章