学Linux的你还在为正则表达式而挠头?

linux 正则表达式

  • 1正则表达式
    • 1.1字符匹配
    • 1.2匹配次数
    • 1.3位置锚定
    • 1.4分组和引用和或者
  • 2实例

介绍grep命令,正则表达式是grep命令的一种使用方法

注意正则表达式与通配符的区别

  • 在文本过滤工具grep中,都是用正则表达式,针对的是文件内容的过滤查找
  • 通配符经常用在文件名上,比如find、ls、mv、cp等

1正则表达式

正则表达式常用元字符

1.1字符匹配

字符 描述
. 匹配任意单个字符
.* 匹配任意长度任意字符
[ ] 匹配指定范围内的单个字符
[^ ] 匹配指定范围外的任意单个字符

1.2匹配次数

字符 描述
* 匹配 * 前面的字符任意次数
? 匹配 ? 前面的字符最多一次
+ 匹配 + 前面的字符至少一次
{m} 匹配 {m}前面的字符m次
{m,n} 匹配 {m,n}前面的字符最少m次,最多n次
{,n} 匹配 {0,n}前面的字符最多n次
{m,} 匹配 {m,}前面的字符最少m次

1.3位置锚定

字符 描述
^ 行首锚定 ‘^word’
$ 行尾锚定 ‘word$’
^$ 空白行 ‘^$’
^word$ 以word开头且以word结尾的行 ‘^word$’
<或者\b 词首锚定 ‘<单词首部’ 或者 ‘\b单词首部’
>或者\b 词尾锚定 ‘单词尾部>’ 或者 ‘单词尾部\b’
或\b…\b 匹配完整单词

1.4分组和引用和或者

分组

分组:\(\)将一个或者多个字符捆绑在一起,当成一个整体进行处理
分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部变量中
这些变量的命名方式为:\1,\2,\3……
\1 从左侧第一个左括号起到与之相匹配的右括号之间的 模式所匹配到的字符
	示例:
	\(string1+\(string2\)\)
	\1=string1+\(string2\)
	\2=string2

反向引用:引用前面的分组括号中的模式所匹配字符而非模式本身

或者

|:
a|b:a或b		C|cat:C或cat			\(C|c\)|at:Cat或cat

2实例

  1. 显示/etc/passwd文件中不以/bin/bash结尾的行
    学Linux的你还在为正则表达式而挠头?_第1张图片

2.显示/proc/meminfo文件中以大小s开头的行
学Linux的你还在为正则表达式而挠头?_第2张图片
3.找出/etc/passwd中的两位或三位数
学Linux的你还在为正则表达式而挠头?_第3张图片

你可能感兴趣的:(linux,正则表达式)