首页 > 系统服务 > 详细

Linux 学习笔记——正则表达式

时间:2016-01-11 06:52:47      阅读:237      评论:0      收藏:0      [点我收藏+]

&& 并且 成功-执行 不成功-不执行

|| 或者 成功-不执行 不成功-执行

;      (不)成功-执行


grep --color ‘root‘ /etc/passwd 高亮

echo "alias cg=‘grep --clort‘" >> ~/.bashrc 

-n 显示行数

-c 计数几行

-v 不包含keyword

-A 2 多显示下两行

-B 2 多显示上两行

-C 2 多显示上下两行

-r ‘root‘ /etc/* 目录下搜索关键字,含文件目录名字,内容

-rh 不显示最前面目录路径

cg ‘[0-9]‘ 1.txt

cg ‘[a-zA-Z]‘ 1.txt

cg -v ‘[a-zA-Z]‘ 1.txt 不包含

cg ‘^[a-z]‘ 1.txt 以字母开头

cg ‘[^0-9]‘ 1.txt 不包含纯的数字,不包含空行

cg ‘^[^0-9]‘ 1.txt 不以数字开头的行,不包含空行

cg ‘^$‘ 1.txt 显示空行

cg ‘r.o‘ 1.txt 任意一个字符

cg ‘r*o‘ 1.txt 0个或多个前面的字符 o也符合

cg ‘r.*o‘ 1.txt r开头o结果都算,中间不管什么

cg ‘r\?o‘ 1.txt 脱义字符  ==cg -E ‘r?o‘  0个或1个前面的字符

grep -E ==egrep E代替脱义 


egrep ‘r+o‘ 1.txt 1个或多个前面的字符


+ ? () {} |需使用egrep 或者 grep -E 或者 脱义\

egrep ‘root|nologin‘ 1.txt 或者

grep ‘root‘ 1.txt | grep ‘nologin‘ 并且

egrep ‘(rr)+‘ 1.txt 整体匹配 ==grep -E ‘(rr)+‘ 1.txt

egrep ‘(rr){1,3}‘ 1.txt  匹配1到3次

egrep ‘(rr){5}‘ 1.txt 匹配5次


sed 与grep 区别不支持颜色 grep所有的功能sed都支持

显示功能,n r // p


sed -n ‘10‘p 1.txt 打印前10行 ‘1,10‘ ‘3,$‘

sed -n ‘/root/‘p 1.txt 包含root的行

sed -n ‘/r.ot/‘p 1.txt  ‘/r*o/‘ ‘/r.*o/‘

sed -n ‘/r\?ot/‘p 1.txt ‘/r\+o/‘ ‘/root\|nologin/‘ ‘/\(oo\)\+/‘

sed -n ‘/root/p; /mail/p‘ passwd  显示root或者mail的行,全含有的话,显示多次

=== sed -n -e ‘/root/p‘ -e ‘/mail/p‘ passwd 遇上一条命令一样

sed -n -r ‘/root|mail/p‘ passwd 不会显示多次


r代替脱义

sed -r -n ‘/(oo)+/‘p 1.txt 无需脱义

 ‘/[0-9]/‘ ‘/[^0-9]/‘纯数字 ‘/[^a-zA-Z]/‘纯字母 ‘/^$/‘空行 


删除功能,无需脱义和r,关键字需要//,没有关键字不需要//

sed ‘/^$/‘d 1.txt 删除空行 ‘/[0-9]/‘ ‘/[a-zA-Z]/‘


sed ‘1,19‘d 1.txt 删除1到19行 不会改变文件内容

sed -i ‘1,19‘d 1.txt 改变文件内容 wc -l 1.txt 不推荐使用,先预览再使用,或者cp


查找替换,与vim相似,@#

sed ‘1,10s/nologin/login/g‘ 1.txt 1到10行替换 -i 直接修改内容

sed ‘1,10s/\/sbin\/login/login/g‘ 1.txt 脱义

sed ‘1,10s#/sbin/login#login#g‘ 1.txt 无需脱义

sed ‘1,10s@/sbin/loing@login@g‘ 1.txt 无需脱义

sed ‘s@/sbin/loing@login@g‘ 1.txt  全部替换

sed ‘s@^.*$@login@g‘ 1.txt 所有行换成  &表示一整行

sed ‘s@^.*$@&login@g‘ 所有行尾增加 

sed ‘s@^.*$@& login@g‘ 多了空格

sed ‘s#[0-9]##g‘ 删除所有数字,空 [a-zA-Z]

sed ‘s#[^0-9a-zA-Z]##g‘删除所有特殊字符


调换

sed -r ‘1,10s#(^[a-zA-Z0-9]+)(:.*:)(.*$)#\3\2\1#g‘ 第一段和最后一段调换位置,不包含特殊符号

sed -r ‘s/(^.)(.*)(.$)/\3\2\1/g‘ passwd 第一个字符和最后一个字符调换


awk 区别 分段 不支持颜色,不支持{ } grep sed支持{ }

显示

awk -F ‘:‘ ‘OFS=":" {print $3,$4}‘ passwd OFS指定分隔符


匹配

awk ‘/root/‘ passwd

awk ‘/root|user/‘ passwd 或者,不会多次显示,无需脱义

awk ‘/r*o/‘ passwd . *. ? +

awk ‘/(oo)+/‘ passwd

awk -F ‘:‘ ‘$1~/r*o/‘ passwd 段匹配

awk -F ‘:‘ ‘$1~/r*o/ {print $3}‘ passwd 匹配后只显示某一段

awk -F ‘:‘ ‘$1~/r*o/ {print $1}; $1~/mail/ {print $1}‘ passwd 或者,满足多个,多次显示

awk -F ‘:‘ ‘$1~/r*o|mail/ {print $1}‘ passwd 同上,但不会多次显示


最后2节未更新

Linux 学习笔记——正则表达式

原文:http://fishboy84.blog.51cto.com/1816326/1733541

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!