26期20180703 正则 grep
7月3日任務
9.1 正則介紹_grep上
9.2 grep中
9.3 grep下
擴展
把一個目錄下,過濾所有*.php文檔中含有eval的行
grep -r --include="*.php" 'eval' /data/
正則表達式
使用grep可以查找文件中的關鍵字。
語法: grep? "關鍵字" 文件名
有一些選項是可以選的。
-n 是顯示行號
-c顯示行數,一共在這個文件中有多少行帶有這個關鍵字
-v取反,就是多少行沒有這個關鍵字,也就是除了關鍵字的那兩行外
-A 數字,表示顯示出關鍵字以及往下數字行的內容
-B 數字,是和A想反是往上數字行
-C 數字 就是既有上又有下,往上數字行 往下數字行
grep '[0-9]' filename?
表示0-9范圍里的數字匹配?
也可以采用排除的選項 -v?
grep -v '[0-9]' filename
關鍵字里的參數
grep -v '^#' filename?
grep -v '^[0-9]' filename? 就是查找非開頭為數字的行
-v是取反 ^是行開始的意思? ^#就是以#為開頭的行?
?
grep -v ‘^#’ inittab 取出來首字母不為#的行
注意:這個^是在[]里面
grep '[^0-9]' inittab 作用是非0-9,只要不是數字任何一個字符都符合要求。就是說哪怕有一個字符不為0,這一行都滿足要求。
這個是以一個非數字的字符開頭的行,只要不是數字開頭都符號,哪怕是后面有數字都沒有關系。所以下面
同樣的,假如前面再加上一個 ^ 就表示首位也不能是數字,所以首位有數字的也沒了。
grep 'r.o' passwd 這里的點代表了任意一個字符,占位符。
grep 'o*o' passwd *表示左邊匹配0到無限次,右邊必須存在
如果是使用'.*'的話,表示匹配任意字符。*的左邊可有可無嘛
比如像找某個用戶的那一行,直接用'用戶名.*bash' 就可以查到
正則中{}表示范圍,但是需要用阻轉義符 \
grep 'o\{2\}' passwd 表示有2個o的?
grep 'o\{1,3\}' passwd 表示1-3個o,記得用逗號,
但是轉義符比較免費,看起來也比較不舒服,是否可以不用\??
那樣的話,egrep就登場了
egrep是grep的擴展
grep -E = egrep
egrep 'o{2}' passwd等同于 grep 'o\{2\}' passwd 等同于 grep -E 'o{2}' passwd
如果是像匹配最后一個字符是什么字母的話,需要在這個字母后面加上$ 換行符 表面后面沒有了
比如查找s開頭n結尾
+ 在egrep 或者 grep -E下使用無需轉義符?
+和*很像,區別是 + 表示+左邊一次或者無數次 而*是表示左邊0次或者無數次
egrep 'o?t' passwd 問號表示問號前面字符出現的次數為0或者1
?
|表示或者,但是也需要使用egrep或者grep -E 來使用。|是選其一,可以有多個
轉載于:https://blog.51cto.com/13691454/2135770
總結
以上是生活随笔為你收集整理的26期20180703 正则 grep的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 干货 | 金融级消息队列的演进 — 蚂蚁
- 下一篇: SpringBoot 文件上传、下载、设