我們知道,正則表達式可以大大的提高我們的工作效率。
在了解正則表達式之前,我們需要了解,通配符的概念。
在linux中,我們在使用ls這個命令的時候經常會使用下面這種用法
[fuwh@localhost stu]$ ll lin1* -rw-r--r--. 1 fuwh fuwh 2865 7月 26 10:45 lin1 -rw-r--r--. 1 root root 2865 7月 26 10:58 lin11 [fuwh@localhost stu]$
可以注意到,我們這里使用了*來代替各種字符的意思。
但是這並不是正則表達式。
在linux中,有很多的命令,如果這些命令支持正則表達式,那我們就可以在命令里面使用正則表達式。比如:grep、vi等
但是,如果是不支持正則表達式的話,那就只能使用bash自帶的通配符功能了。
通配符:
* :代表0個到無窮個任意字符
?:代表一個任意字符
[]:代表括號內的任意字符(一個,且一定有一個)
[ - ]:代表減號前后的字符之間的所有字符
[^]:^是反向選擇的意思,表示一定有一個不是括號中的字符
了解完通配符之后,我們就可以來看看有那些正則表達式可以用了。
^word:表示以word開頭
word$:表示以word結尾
.:代表一定有一個任意的字符
\:轉義字符
*:表示前面的那個字符重復0到無窮次
[list]:表示括號內的任意一個
[n1-n2]:表示n1到n2之間的字符
[^list]:表示不是list里面的字符
\{n,m\}:表示前面的字符重復n到m次
\{n\}:表示前面的字符重復n次
\{n,\}:表示前面的字符重復n次以上
+:表示前面的字符重復一次或一次以上
?:表示前面的字符出現0次或一次
|:表示或的意思
():表示群組的意思
()+:表示出現多次的群組
例:
[fuwh@localhost stu]$ cat test.txt fuwh第一海洋 fu的名字good we use google to search not gogle [fuwh@localhost stu]$ grep '^fu' test.txt fuwh第一海洋 fu的名字good [fuwh@localhost stu]$ grep 'd$' test.txt fu的名字good [fuwh@localhost stu]$ grep go\{2\} test.txt [fuwh@localhost stu]$ grep 'go\{2\}' test.txt fu的名字good we use google to search [fuwh@localhost stu]$