(1)準(zhǔn)備工作
創(chuàng)建一個測試文檔test.txt
Seven times have I despised my soul:
——Kahlil Gibran
The first time when I saw her being meek that she might attain height.
The second time when I saw her limping before the crippled.
The third time when she was given to choose between the hard and the easy, and she chose the easy.
The fourth time when she committed a wrong, and comforted herself that others also commit wrong.
The fifth time when she forbore for weakness, and attributed her patience to strength.
The sixth time when she despised the ugliness of a face, and knew not that it was one of her own masks.
And the seventh time when she sang a song of praise, and deemed it a virtue.
(內(nèi)容為紀(jì)伯倫——我曾七次鄙視自己的靈魂)
還有啄栓,為了方便查看,我們可以給grep
命令配置帶有顏色輸出也祠,也就是給grep
命令定義一個別名昙楚。
在當(dāng)前用戶家目錄中的~/.bashrc
文件中配置grep
命令別名:
# 我們當(dāng)前的用戶是root用戶
# 執(zhí)行命令
[root@localhost ~]# vim /root/.bashrc
# 添加內(nèi)容
alias grep='grep --color=auto'
# 或者
# 針對所有用戶
# echo "alias grep='grep --color=auto'" >>/etc/bashrc
# 針對單個用戶
# echo "alias grep='grep --color=auto'" >>~/.bashrc
這樣在grep
命令執(zhí)行后的標(biāo)準(zhǔn)輸出中得湘,就會將文件中匹配的內(nèi)容標(biāo)識彩色还棱。
注意:如果在XShell終端修改的~/.bashrc
配置文件帘睦,需要關(guān)閉當(dāng)前遠(yuǎn)程窗口翼岁,重新打開就可以實現(xiàn)了蕉毯。
(2)"*"練習(xí)
我們執(zhí)行如下命令羔沙,進(jìn)行*
匹配練習(xí)
[root@localhost tmp]# grep "k*" test.txt
結(jié)果如下:
說明:(重點)
任何字母加上*
艾船,或者說任何符號加上*
琅攘,都沒有任何含義昔字,這樣會匹配所有內(nèi)容爆袍,包括空白行。
因為*
的作用是重復(fù)前一個字符0次或任意多次作郭。
所以在Shell中的正則中螃宙,任何符號加上*
是沒有任何含義的,所有的內(nèi)容都會被匹配出來所坯。
如果你需要匹配至少包含一個k
字母的行谆扎,就需要這樣寫"kk*"
,代表匹配至少包含有一個K
的行芹助,也可以有多個k
堂湖。(這行字符串一定要有一個k,但是后面有沒有k都可以状土。)
如下圖:
我們可以看到无蜂,沒有k
的行,和空行都被過濾掉了蒙谓。
如果我們需要匹配至少兩個連續(xù)的ss
字符斥季,需要執(zhí)行如下命令:
grep "sss*" test.txt
以此類推。
注意:
正則是包含匹配累驮,只要含有就會列出酣倾,所以單獨搜索一個k,執(zhí)行grep "k" test.txt
命令谤专,也能獲得和上面一樣的匹配結(jié)果躁锡。如下圖:
換句話說,上面這兩種寫法是一個意思置侍,都是搜索含有k字母的行映之,一行中有一個k字母就可以拦焚,有無數(shù)個k字母也可以,都會被匹配出來杠输。
限位(制)符:
如果是上面描述的這種簡單匹配需求赎败,使用哪種方式都可以。
但是有限位(制)符出現(xiàn)的匹配情況蠢甲,帶*的方式僵刮,處理匹配的情況更豐富。
如下面一段文本:
Stay hungry, stay foolish. ——Steve Jobs
求知若饑,虛心若愚峡钓〖梭希——喬布斯
Stay hungry, stay folish. ——Steve Jobs
Stay hungry, stay fooolish. ——Steve Jobs
Stay hungry, stay foooolish. ——Steve Jobs
Stay hungry, stay fooooolish. ——Steve Jobs
我們可以看到上端文本中foolish
中有不同數(shù)量的o
。(自己隨意錯寫的)
如果我的需求是搜索foolish
單詞中有三個以上數(shù)量o
的行能岩,這個時候就需要限位(制)符了寞宫,
其中foolish
單詞中的f
和l
就是限位(制)符的用法。
執(zhí)行命令如下:
[root@192 tmp]# grep "foooo*lish" test2.txt
結(jié)果如下:
說明:其中前三個o
代表固定有三個連續(xù)的o
字母出現(xiàn)拉鹃,最后一個o*
代表可以匹配0次到任意多次個o字母辈赋。
在這種需要有限位(制)符情況下的匹配,加上*
就非常好處理了膏燕。