一、什么是正则表达式
正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
注意:
①正则表达式是个广义的概念,在这里讲的是针对Linux使用的正则表达式。
②正则表达式和我们常用的通配符特殊字符是有本质区别的。
③Linux正则表达式一般以行为单位处理的。
④为了使最终结果显示的更好,建议调整别名(alias grep='grep --color=auto'),让匹配的内容显示颜色。
⑤注意字符集:LC_ALL=C。
⑥本文章是以grep使用为例,可能会跟使用awk,sed有所差异。
二、学习此内容的准备工作
①调整别名
alias grep='grep --color=auto'
②调整字符集
export LC_ALL=C
③检查字符集是否更改
echo $LC_ALL
cat >>oldboy.log <<GONGLI
I am oldboy teacher!
I teach linux.
I like badminton ball ,billard ball and chinese chess!
my blog is http://oldboy.blog.51cto.com
our site is http://www.etiantian.org
my qq num is 49000488.
not 4900000448.
my god,i am not oldbey,but OLDBOY!
GONGLI
gd
good
goood
Glad
oldboy1
三、基础正则字符说明(文中的所有示例请调整别名后自行看效果)
1、^word
2、word$
3、^$
表示空行。
例:
①过滤出来以m开头的行
grep "^m" oldboy.log
②过滤出来以m结尾的行
grep "m$" oldboy.log
③过滤空行
grep -v "^$" oldboy.log #排除空行
grep -n "^$" oldboy.log #-n显示行号
grep -vn "^$" oldboy.log #显示行号并取反
4、.
代表且只代表任意一个字符。
5、\
转义符号,.就只代表点本身,让有着特殊身份意义的字符脱掉马甲,还原原型。
6、
重复0个或多个前面的一个字符。
7、.
匹配所有字符。

延伸:
^.以任意多个字符开头,.$以任意多个字符结尾。
例:
①匹配任意一个字符
grep -n "." oldboy.log #结果无空行
grep -n ".*" oldboy.log #文件有啥显示啥
grep -ni "oldb.y" oldboy.log #匹配oldb(x)y的,-i意思是也匹配大写
②匹配以点结尾的错误方法
grep -n ".$" oldboy.log
③匹配以点结尾的正确方法(只匹配点,\转义)
grep -n ".$" oldboy.log
④只显示匹配的内容(-o)
grep -on "oldb.y" oldboy.log
补充-点的含义小结:
①当前目录
②使得文件生效相当于source
③隐藏文件
④任意一个字符
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-67035-1.html
就导弹放放吧
质检总局都买不着真货