shell脚本编程(一)正则表达式

正则表达式

文本查找

grep egrep fgrep


grep:根据模式搜索文本,并将符合模式的文本行显示出来,只显示包含文本内容的行

    -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 不支持正则表达式(不支持元字符)

你可能感兴趣的:(个人学习笔记,shell,正则表达式,编程,grep,文本查找)