目录
前言
正则表达式对于我们的工作是不可或缺的,他本质也是循环,是将变动值反复的以一种规范的形式进行输入的方式。
正则表达式
正则表达式,又称正规表达式、常规表达式
使用字符串来描述、匹配一系列符合某个规则的字符串
正则表达式组成
普通字符
大小写字母、数字、标点符号及一些其他符号
元字符
在正则表达式中具有特殊意义的专用字符
grep命令
-a :将binary文件以text文件的方式搜寻数据
-c : 计算找到'搜寻字符串·的次数
-i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-v :反向选择,亦即显示出没有'搜寻字符串′内容的那一行!
--color=auto :可以将找到的关键词部分加上颜色的显示喔!
基础正则表达式
特殊字符
\:转义符,将特殊字符进行转义,忽略其特殊意义a\.b匹配a.b,但不能匹配ajb,.被转义为特殊意义
^:匹配行首,^则是匹配字符串的开始,^tux匹配以tux开头的行
$:匹配行尾,$则是匹配字符串的结尾tux$匹配以tux结尾的行
.:匹配除换行符\n之外的任意单个字符,awk则中可以ab.匹配abc或bad,不可匹配abcd或abde,只能匹配单字符..
[list]:匹配list列表中的一个字符例:go[ola]d,[abc]、[a-z]、[a-z0-9]
[^list]:匹配任意不在list列表中的一个字符例:[^a-z]、[^0-9]、[^A-Z0-9]
*:匹配前面子表达式0次或者多次例: goo*d、go.*d
\{n\} :匹配前面的子表达式n次,例:go\{2\}d、'[0-9]\{2\ } '匹配两位数字
\{n,\}:匹配前面的子表达式不少于n次,例: go\{2,\}d、'[0-9]\{2,\}'匹配两位及两位以上数字
\{n,m\} ﹔匹配前面的子表达式n到m次,例: go\{2,3\)d、' [0-9]\{2,3\} '匹配两位到三位数字
注:egrep、awk使用{n}、{n, }、{n,m}匹配时"[}"前不用加"\”
egrep -E -n 'wo{2}d' test.txt
egrep -E -n 'wo {2,3}d' test.txt
定位符
^匹配输入字符串开始的位置
$匹配输入字符串结尾的位置
非打印字符
\n 匹配一个换行符
\r 匹配一个回车符
\t 匹配一个制表符
扩展正则表达式
是对基础正则表达式的扩充深化扩展
+:匹配前面子表达式1次以上
例: go+d,将匹配至少一个o
?:匹配前面子表达式0次或者1次
例: go?d,将匹配gd或god
():将括号中的字符串作为一个整体
例:(xyz)+,将匹配xyz整体1次以上,如xyzxyz
|:以或的方式匹配字条串
例1: good|food,将匹配good或者food
例2: g(oo|la)d,将匹配good或者glad
文本处理器
sed 工具
sed [选项] '操作' 参数
命令选项
-e 或--expression=:表示用指定命令或者脚本来处理输入的文本文件。
-f 或--file=:表示用指定的脚本文件来处理输入的文本文件。
-h 或--help:显示帮助。
-n、--quiet 或 silent:表示仅显示处理后的结果。
-i:直接编辑文本文件
“操作”用于指定对文件操作的动作行为,常见的操作包括以下几种。
a:增加,在当前行下面增加一行指定内容。
c:替换,将选定行替换为指定内容。
d:删除,删除选定的行。
i:插入,在选定行上面插入一行指定内容。
p:打印,如果同时指定行,表示打印指定行;如果不指定行,则表示打印所有内容;如果有非打印字符,则以 ASCII 码输出。其通常与“-n”选项一起使用。
s:替换,替换指定字符。
y:字符转换。
总结
sed是正则表达式的工具,正则表达式的存在依赖于其中各种各样的命令。可以帮助我们的脚本动态的完成各钟任务