Shell 正则表达式

简介: Shell 正则表达式

什么是正则表达式


正则表达式是用于描述字符排列和匹配模式的一种语法规则。

它主要用于字符串的模式分割、匹配、查找以及替换操作。

概念看看就行,为了保证博文的完整性,记录下,其实没太大用….


正则表达式的分类


1.基本的正则表达式(Basic Regular Expression 又叫Basic RegEx 简称BREs)

2.扩展的正则表达式(Extended Regular Expression 又叫Extended RegEx 简称EREs)

3.Perl的正则表达式(Perl Regular Expression 又叫Perl RegEx 简称PREs)


基本组成部分

正则表达式的基本组成部分。


20160926194906004.png

POSIX字符类


POSIX字符类是一个形如[:…:]的特殊元序列(meta sequence),他可以用于匹配特定的字符范围。


20160926194950458.png


元字符


元字符(meta character)是一种Perl风格的正则表达式,只有一部分文本处理工具支持它,并不是所有的文本处理工具都支持。


20160926195018927.png


正则表达式与通配符


正则表达式


正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配grep,awk,sed等命令可以支持正则表达式。


通配符用来匹配符号条件的文件名,通配符是完全匹配

ls,find,cp这些命令不支持正则表达式,所以只能使用shell自己的通配符来进行匹配。


通配符


  • * 代表匹配任意内容
  • ? 代表匹配任意一个内容
  • [] 代表中括号中一个字符


20160907193906725.png


基础正则表达式概述

常见元字符


20160907194123587.png


* 前一个字符匹配0次或任意多次

. 匹配除了换行符外任意一个字符


^ 匹配行首 例如 ^hello 会匹配以hello开头的行


$ 匹配行尾 例如 hello$ 会匹配以hello结尾的行

[] 匹配中括号中指定的任意一个字符,只匹配一个字符。[0-9]匹配任意一位数字

[^] 匹配除中括号的字符以外的任意一个字符。 例如 [^0-9]匹配任意一位非数字字符

[^a-z]表示任意一位非小写字母

\ 转义符 用于取消将特殊符号的含义取消

\{n\} 表示其前面的字符恰好出现N次 例如 [0-9]{4} 匹配4位数字

[1][3-8][0-9]\{9\} 匹配手机号码

\{n,\} 表示其前面的字符出现不小于n次。 例如 [0-9]{2,} 表示两位及以上的数字

\{n,m\} 表示其前面的字符至少出现n次,最多出现m次。

例如 [a-z]{6,8} 匹配6到8位的小写字母


元字符 *


20160907194652611.png


20160907194731455.png

元字符 .


20160907195023396.png


符号: .

grep "s..d" test.txt 表示匹配s和d之间含有2个任意字符(除换行符)行,有多少个点就多少个字符
grep "s.*d" test.txt 表示匹配s和d之间含有任意内容的行


元字符 ^


20160907195038646.png


符号^代表匹配行首,符号$代表匹配行尾

grep "^s" test.txt 匹配以s开头的行
grep "b$" test.txt 匹配以b结尾的行
grep "^$" test.txt 匹配空白行
grep -n  在结果中增加行号


元字符 []


20160907195055881.png


符号[ ]的作用与通配符中的[ ]一致

grep "[0-9]" test.txt 匹配包含有数字的全部行
注意:^用在[ ]内代表取反
grep "[^0-9]" test.txt 匹配包含字母的全部行
匹配所有字母: [a-zA-z]


元字符 [^]

20160907195115622.png


"^"匹配行首,"$"匹配行尾
"^M" 匹配以大写“M”开头的行
"n$" 匹配以小写“n”结尾的行
"^$" 会匹配空白行


元字符 \


20160907195150341.png

元字符 \{n\}


20160907195206617.png

"\{n\}"表示其前面的字符恰好出现n次

元字符 \{n,\}


20160907195248853.png

"\{n,\}"表示其前面的字符出现n次以上
"^[0-9]\{3\}[a-z]"以数字开头,且三个以上字母的行

元字符 \{n,m\}


20160907195324107.png

正则表达式案例

grep日期 yyyy-mm-dd


grep日期 yyyy-mm-dd : [0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}


grep IP地址

grep IP地址:
ifconfig|grep "[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}"
inet 192.168.0.104 netmask 255.255.255.0 broadcast 192.168.0.255


相关文章
|
4月前
|
Unix Shell Python
在Shell中转换Python正则表达式
结合以上提到的注意事项与差异点,就能在Shell环境中巧妙地转换并使用Python正则表达式了。务实和节省时间的做法是,将一些常见Python正则模式记在手边,随时查阅并对照POSIX标准进行调整。同时,借助在线正则表达式测试器和文档也能有效地提升在Shell环境中处理正则表达式的能力。
48 5
|
7月前
|
运维 Shell Python
第六章 Shell正则表达式
第六章 Shell正则表达式
|
Shell
shell中正则表达式的用途以及示例
shell中正则表达式的用途以及示例
94 1
|
7月前
|
Linux Shell
Linux下的Shell基础——正则表达式入门(四)
Linux下的Shell基础——正则表达式入门(四)
47 1
Linux下的Shell基础——正则表达式入门(四)
|
7月前
|
存储 算法 Shell
【Shell 命令集合 文档编辑】Linux 正则表达式匹配 egrep命令使用教程
【Shell 命令集合 文档编辑】Linux 正则表达式匹配 egrep命令使用教程
84 0
|
Shell Linux Perl
Shell基础学习---3、Read读取控制台输入、函数、正则表达式入门
Shell基础学习---3、Read读取控制台输入、函数、正则表达式入门
|
7月前
|
Shell Linux Perl
Shell基础学习---3、Read读取控制台输入、函数、综合应用案例:归档文件、正则表达式入门(第二天学习)
Shell基础学习---3、Read读取控制台输入、函数、综合应用案例:归档文件、正则表达式入门
128 1
|
存储 Shell Linux
我们一起来学Shell - 正则表达式
我们一起来学Shell - 正则表达式
45 0
|
运维 JavaScript 前端开发
运维(16)-shell正则表达式
运维(16)-shell正则表达式
55 0
|
Shell
shell中正则表达式中字符的应用具体实例以及详解
shell中正则表达式中字符的应用具体实例以及详解
136 3