shell脚本编程(一)正则表达式
2017-12-30 14:01
801 查看
正则表达式
grep:根据模式搜索文本,并将符合模式的文本行显示出来,只显示包含文本内容的行
正则表达式:regular expression ,REGEXP
元字符:
1、基本正则表达式
位置锚定:
REGEXP:REGular EXPression
Pattern:模式
正则表达式:
Basic REGEXP 基本
Extended REGEXP 扩展
基本正则表达式:
。 任意单个字符
[] 任意范围内字符
[^] 任意范围外的字符
次数匹配;
*匹配其前面任意单个字符
\?匹配其前字符0或1次
{m,n}匹配其前字符至少m次,至多n次,n省略则无上限,m=0则无下限
.*任意长度任意字符
grep 使用基本正则表达式定义的模式来过滤文本的命令
扩展正则表达式:
字符匹配:
. [] [^]
次数匹配:
*
?
+其前面的字符至少一次
{m,n}
位置锚定:
^ $ \< >
分组:
() \1 \2
或者:
| :or 左右完整字符串匹配
grep –E = egrep
fgrep fast grep 不支持正则表达式(不支持元字符)
文本查找
grep egrep fgrepgrep:根据模式搜索文本,并将符合模式的文本行显示出来,只显示包含文本内容的行
-i 忽略大小写 --color 高亮文本 -v 反向查找显示没有被模式匹配的行,匹配到的不显示 -o 只显示被模式匹配的串
alias grep='grep --color' #命令取别名
[~]#grep 'openstack' /etc/passwd openstack:x:2004:2004::/home/openstack:/bin/bash
*:任意长度的任意字符 ?:任意单个字符 []:任意范围之内的任意单个字符 [^]:任意范围之外的任意单个字符 [:didit:]数字 [:upper:]大写 [:punct:]字符标点 [:space:]空格
正则表达式:regular expression ,REGEXP
元字符:
1、基本正则表达式
. 匹配任意单个字符
[root@localhost ~]# grep 'r..t' /etc/passwd root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin
* 匹配其前面的字符任意次
[root@localhost ~]# grep 'r.*t' /etc/passwd (匹配字符串r开头、t结尾) root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin polkitd:x:998:996:User for polkitd:/:/sbin/nologin abrt:x:173:173::/etc/abrt:/sbin/nologin
\? 匹配其前面的字符1次或者0次 \{m,n\} 匹配其前面的字符,至少m次 至多n次
[root@localhost ~]# grep 'ro\{0,1\}t' /etc/passwd abrt:x:173:173::/etc/abrt:/sbin/nologin rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin
位置锚定:
^ 锚定行首,此字符后的任意内容必须出现那在行首
[root@localhost ~]# grep '^r..t' /etc/passwd root:x:0:0:root:/root:/bin/bash
$ 锚定行尾,次字符前的任意内容必须出现在行尾
[root@localhost ~]# grep 'bash$' /etc/passwd root:x:0:0:root:/root:/bin/bash black:x:1000:1000:black:/home/black:/bin/bash black1:x:1008:1008::/home/kingdee:/bin/bash
^$ 空白行 \<或\b 锚定词首,其后面的任意字符必须作为单词的首部出现 \>或\b 锚定词尾,其前面的任意字符必须作为单词的尾部出现 \<root\>或\broot\b 锁定单词,root作为一个完整的单词出现 \(\) 分组,匹配括号内的字符串任意次数
[root@localhost ~]# grep '\(ab\)*' test.txt a b ab abab aab aabb abababa abbababbab
\1 调用第一个左括号以及与之对应的右括号所包括的内容 \2 类似 \3
REGEXP:REGular EXPression
Pattern:模式
正则表达式:
Basic REGEXP 基本
Extended REGEXP 扩展
基本正则表达式:
。 任意单个字符
[] 任意范围内字符
[^] 任意范围外的字符
次数匹配;
*匹配其前面任意单个字符
\?匹配其前字符0或1次
{m,n}匹配其前字符至少m次,至多n次,n省略则无上限,m=0则无下限
.*任意长度任意字符
grep 使用基本正则表达式定义的模式来过滤文本的命令
-i 忽略大小写 -v 反向搜索(搜索的不显示) -o 只显示搜索到的字符串 --color 高亮匹配的字符 -E 使用扩展的正则表达式 -A n 显示被匹配到的行以及其后面的n行 -B n 显示被匹配到的行以及其前面的两行 -C n 前后各n行
扩展正则表达式:
字符匹配:
. [] [^]
次数匹配:
*
?
+其前面的字符至少一次
{m,n}
位置锚定:
^ $ \< >
分组:
() \1 \2
或者:
| :or 左右完整字符串匹配
grep –E = egrep
fgrep fast grep 不支持正则表达式(不支持元字符)
相关文章推荐
- #7 shell脚本编程之正则表达式
- Shell脚本高级编程 二 正则表达式
- Linux下shell脚本编程之正则表达式
- shell脚本编程4:正则表达式
- linux命令行与shell脚本大全_第十九章_正则表达式
- shell脚本学习:快速理解正则表达式之grep篇
- Linux--shell脚本之正则表达式
- 让shell脚本中的正则表达式调用变量
- shell脚本学习:正则表达式之sed,tr篇
- VB脚本编程之2.0——加入正则表达式查找替换功能
- shell 脚本 正则表达式通配符之 "[]" [大三TJB_708]
- shell脚本学习笔记之正则表达式
- shell 编程之正则表达式
- shell脚本学习笔记之grep&正则表达式
- shell及脚本3——正则表达式
- Shell脚本中通过正则表达式匹配IP地址
- 学习笔记之Shell脚本学习指南 & sed与awk & 正则表达式
- Linux Shell脚本的编程之正则表达式
- shell编程之正则表达式
- Linux--shell脚本之正则表达式