當你在使用grep命令的時候確定會用到正則表達式,那麼怎麼在grep命令中使用正則表達式呢?正則表達式
正則表達式元字符bash
grep命令支持不少正則表達式的元字符,以使用戶可以更精準的定義要查找的模式。例如,能夠經過制定的選項來關閉大小寫敏感,要求顯示行號等。spa
元字符 | 功能 | 示例 | 匹配對象 |
^ | 行首定位符 | ‘^user' | 匹配全部以user開頭的行 |
$ | 行尾定位符 | ’user$' | 匹配因此以user結尾的行 |
。 | 匹配一個字符 | ‘u.r' | 匹配包含一個u,後跟一個字符,再跟一個r的行 |
* | 匹配兩個或多個前導字符 | ’u*ser' | 匹配包含零個或多個u後,跟ser模式的行 |
[] | 匹配一組字符中的人一個 | ‘[uU]ser' | 匹配包含user或者User的行 |
[^] | 匹配不在指定字符組裏的字符 | ’[^A-S]ser‘ | 匹配一個不在A到S之間的字符,而且該字符後緊跟着ser的行 |
\< | 詞首定位符 | ’\<user‘ | 匹配包含以user開頭的詞的行 |
\> | 詞尾定位符 | ’user\>‘ | 匹配包含以user結尾的詞的行 |
\<..\> | 標記匹配到的字符 | ’\<user\>' | 匹配包含<user>的行 |
{M}{M,}{M,N} | 匹配重複出現的次數M次匹配出現的次數至少M次code 匹配出現的次數至少M次,但不超過N次對象 |
'u\{4\}u\{5\}字符串 u\{5,8\}'table |
匹配連續出現4個u的行匹配連續出現最少5個u的行devops 匹配連續出現最少5個,最多8個u的行搜索 |
grep 正則表達式示例:grep
在/etc/passwd 裏查找包含「user1「字符串的行
[root@devops ~]# grep user1 /etc/passwd user1:x:502:503::/home/user1:/bin/bash
若是想忽略大小寫的區作搜索能夠使用-i選項
#grep user1 /etc/passwd
你能夠使用"."元字符爲一個單個的字符作匹配,例如咱們能夠使用下面的命令去匹配一個以」u"開頭,以「r」結尾,中間是任意一個字符的行
[root@devops ~]# grep '\<u.r\>' /etc/passwd game:x:12:100:games:/usr/games:/sbin/nologin
如何在grep正則表達式中準確的匹配全部包含兩個字符的行?
[root@devops ~]# grep '^..$' /