正则表达式

正则表达式

正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法

正则表达式主要用于查找符合某些复杂规则的字符串

在linux中,通配符是由shell解释的,而正则表达式则是由命令解释的,文本处理工具有grep、sed

1 grep

grep 文本处理工具

下面是grep的参数

-n 行号
-0 只内容
-q 静默
echo $?

-l 文件名
-A 5 后五行
-B 3 前3行
-C 2 上下两行
-c  行数
-E==egrep
-i 忽略大小写
-v 去反
-w 单词

2 正则表达式的规则

^
gerp '^root' 匹配root开头的
gerp 'bash$' 匹配bash结尾的 能都登录的

.
任意一个字符
gerp '^.'
gerp 'b.n'
*
前面的字符有0个到无穷个
*前面紧贴的字符
左边那一个字符
+
不能直接用grep
egrep gerp -e
左边 有一个到无穷个
左边那一个字符

{}
内部可以指定数量
{2,4} 指定范围
{2,} 2-无穷


左边出现0次或者1次

[]
取其中的一个
egrep
[asdfasdt123456-]
需要转义
-放到结尾 需要匹配-本身
[a-z]小写字母
[A-Z]大写字母
[a-zA-Z]==[a-Z]小写大写字母
[0-9]
[0-9]+

^[0-9]  取开头是数字的
^[^0-9]取反

3 sed stream editor 流编辑器

过滤一行的内容 1 定位 2 处理
-n 不打印 静默
-e '' -e '' 处理多个
-i
-f 规则写入文件
定位 '1'
'3d' 删除第3行 实际文件没有写入
‘3p’打印第三行再打印一次
-n '3p'只打印第三行
‘3c 1111111’ 第三行改成1111111打印
‘3a 11111’ 追加
‘3i 111’ 插入在原来第三行的前面
正则定位:
sed
'/^root/d' test.txt 杀出root 开头
‘1,4d’ tes.txt 删除1-4
‘1d;4d’ 删除1和4行

最常用
sed 's' test 替换
sed 's/root/hello/' test 没定位 全部匹配
sed 's/root/hello/g' test 没定位 全部匹配 g 把一行中的全部修改

sed -r 扩展
posted @ 2017-03-29 16:07  hzxPeter  阅读(136)  评论(0编辑  收藏  举报