linux正则表达式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux正则表达式相关的知识,希望对你有一定的参考价值。
linux正则表达式
1.1 定义
过滤,在文件中找东西
省事,提高我们的效率
正则表达式就是为了处理大量的文字、文本、字符串而定义的一套规则和方法
linux正则表达式一般以行为单位处理的
一次处理一行
1.2 正则表达式的特点
linux运维工作,大量过滤日志文件,化繁为简,找东西
简单、高效、易用
正则表达式是高级工具:三剑客都支持
1.3 正则表达式与通配符的区别
通配符是用来找文件,linux下面大部分命令都可以用
(ls * .txt cp /tmp)
正则表达式用来找文本、文字、文件内容常用的地方就是三剑客
1.4 正则表达式使用注意事项
1.正则表达式是按照行来处理
2.grep |egrep 给grep:egrep找到的内容加上颜色
grep
cat>>/etc/profile<<EOF
alias egrep=‘egrep--color=auto‘
alias grep=‘grep --color=auto‘
EOF
source /etc/profile
1.5 正则表达式的学习
1.5.1 基础正则表达式
^ $ . * [] [^]
例:
1.5.1.1 创建环境
cat >>/oldboy.txt<<EOF
I am oldboy teacher!
I teach linux.
I like badminton ball ,billiard ball and chinesechess!
my blog is http://oldboy.blog.51cto.com
our site is http://www.etiantian.org
my qq num is 49000448.
not 4900000448.
my god ,i am not oldbey,but OLDBOY!
1.5.2 扩展正则表达式
+ | ? {}
$ 以....结尾
找出以m结尾的
grep "$m" oldboy.txt
cat -An oldboy.txt
1.6 正则表达式贪婪性
-----.* * + {}
正则表达式的
##贪婪 有多少钱拿到多少钱能吃多少 吃多少 能匹配多少匹配多少
##表示所有的时候 .*
正则表达式的贪婪性
1.6.1 例1
找出文件中的大小写字母和数字
grep -n "[a-z0-9A-Z]" /oldboy.txt
#grep "数字小写字母"
1.6.2 不是m或n开头的行
grep "^[^mn]" /oldboy.txt
1.6.3 [^abc] 排除a 或排除b 或排除c
grep "[abc]" oldboy.txt
grep "[^abc]" oldboy.txt
1.6.4 ^ 以。。。。。开头的行
^oldboy
^m
$ 以xxxxxx结尾
以m结尾的行
grep "m$" oldboy.txt
my blog is http://oldboy.blog.51cto.com
1.6.5 ^$ 空行
空行这一行里面啥也没有 没有任何的符号 空格
grep " " oldboy.txt
1.6.6 取出oldboy.txt里面的空行 并显示行号
[[email protected] ~]#cat -An oldboy.txt
1 Iam oldboy teacher!$
2 Iteach linux.$
3 $
4 Ilike badminton ball ,billiard ball and chinese chess!$
5 myblog is http://oldboy.blog.51cto.com$
6 $
7 oursite is http://www.etiantian.org$
8 $
9 myqq num is 49000448.$
10 $
11 not4900000448.$
12 mygod ,i am not oldbey,but OLDBOY!$
[[email protected] ~]# grep -n "^$" oldboy.txt
1.7 . 代表且只能代表任意"一个"字符/文本/符号(不匹配空行)
1.7.1 例
[[email protected] ~]# grep "." oldboy.txt
[[email protected] ~]# grep -o"." oldboy.txt
1.7.2 ####找出 oldboy.txt中 以点结尾的行
[[email protected] ~]# grep ".$" oldboy.txt
[[email protected] ~]# grep "\.$" oldboy.txt
I teach linux.
my qq num is 49000448.
not 4900000448.
1.8 \ 撬棍 转义字符 让有特殊含义的字符脱掉马甲,现出原形
去掉特殊含义 脱掉马甲
grep "\.$"oldboy.txt
####
* 前一个字符连续出现了0次或多次
连续出现0次 就是啥也没有
[[email protected] ~]# grep "0*" oldboy.txt
###*表示连续出现0次的问题(了解)
[[email protected] ~]# #连续出现0次 就是啥也没有
[[email protected] ~]# #"0*" 连续出现0次的时候 相当于什么都没有就是 ""
[[email protected] ~]# #会把整个文件都显示出来
[[email protected] ~]# grep "" oldboy.txt
[[email protected] ~]# grep -o "0*" oldboy.txt
1.9 .* 所有 任何东西
用一个grep怎么找出以m开头并且以m结尾的行 ###=======stu*.txt 所有以stu开头以.txt结尾的文件
[[email protected] ~]# grep "^m.*m$" oldboy.txt
1.10 正则表达式贪婪性-----.* * + {}
[[email protected] ~]# grep "^.*o" oldboy.txt
####贪婪 有多少钱拿到多少钱 能吃多少 吃多少 能匹配多少匹配多少
####表示所有的时候 .*
##正则表达式的贪婪性
1.11 [] 筐 整体
[abc] 一次就找出 abc中的任何一个 a或b或c
grep "[abc]" oldboy.txt
grep -o "[abc]" oldboy.txt
grep "[abcdefghijklmnopqrstuvwxyz]" oldboy.txt
grep "[a-z]" oldboy.txt
grep "[A-Z]" oldboy.txt
grep "[0-9]" oldboy.txt
1.12 找出文件中的大小写字母和数字?
[[email protected] ~]# #找出文件中的大小写字母和数字?
[[email protected] ~]# grep"[a-zA-Z0-9]" oldboy.txt
[[email protected] ~]# grep "[a,b]"oldboy.txt
1.13 [^abc] 排除a 或排除b 或排除c
[[email protected] ~]# grep "[abc]"oldboy.txt
[[email protected]~]# grep "[^abc]" oldboy.txt
1.14 不是m或n开头的行
[[email protected] ~]# ##以
[[email protected] ~]# grep "^[mn]"oldboy.txt
[[email protected]~]# grep "^[^mn]" oldboy.txt
-v [^abc]
-v 排除某几行
[^abc] 排除a或b或c
基础正则表达式
^ $ .* [abc] [^abc]
本文出自 “heyong” 博客,请务必保留此出处http://heyong.blog.51cto.com/13121269/1954028
以上是关于linux正则表达式的主要内容,如果未能解决你的问题,请参考以下文章