正则表达式:
正则表达式就是用某种模式去匹配一类字符串的一个公式
正则表达式是通过正则表达式引擎来实现,它是解释正则表达式的基础软件
LINUX中,常用的正则表达式引擎有两种:基本正则表达式(BRE)、扩展正则表达式(ERE)
大多数LINUX程序符合扩展正则表达式,但有些程序(如sed)只符合ERE的子集。
正则表达式的基础
普通字符(无特殊含义)和元字符(有特殊含义)
正则表达式区分大小写
元字符
基本正则
. 匹配单个字符
* 匹配0个或多个字符
^ 开始处
$ 结尾
[] 字符范围
扩展正则
? 零个或一个字符
+ 一个或多个字符
{} 用于指定出现次数
| 正则表达式作逻辑或
() 分组
其它(很多软件不支持)
\< \> 匹配单词的开始和结束
\( \) 分组
例:
^ 以什么开头(^一定要放在开始处,放在其它位置就作普通字符了)
ll | grep ^d 中显示目录
cat /etc/passwd | sed -n '/^r/p'
echo "This ^ is a test" | sed -n '/s ^/p' -- ^作普通字符,没出
现在最前
This ^ is a test
echo "This ^ is a test" | sed -n '/^ i/p' -- 不是普通字符了
$ 结尾(要放在后面)
显示系统中不能登录的用户
cat /etc/passwd | sed -n '/nologin$/p'
^$ 空行
[root@t176 script]# cat test.txt | sed -n '/^this is a test$/p' --只包
含
this is a test
[YyNn0-9]
常见的正则表达式:
/^$/ 空行
/^.*$/ 整行
特殊字符类
[[:alpha:]] 任意字母
[[:alnum:]] 任意字母和数字
[[:blank:]] 空格或tab
[[:digit:]] 数字
[[:lower:]] 小写字母
[[:print:]] 任意可打印字符
[[:space:]] 空格
[[:upper:]] 大写字母