JavaShuo
欄目
標籤
正則介紹 grep 上中下
時間 2019-12-17
標籤
正則
介紹
grep
中下
欄目
正則表達式
简体版
原文
原文鏈接
正則介紹 grep
egrep 是 grep 的擴展
如圖, grep 'nologin' passwd 能夠搜索passwd中含有nologin的數據行
而後用顏色顯示 nologin
which grep 能夠看到 grep 是一個 alias
之因此可以用顏色顯示nologin 是由於
這個 alias 包含了 --color=auto 自動顯示顏色的設置
參數 -c 能夠統計包含nologin的數據行的數量
這裏是18,表示有18行
參數 -n 能夠顯示行號
如圖最左邊,暗綠色顯示的數字就是每一行的行號
如圖,參數 i 能夠不區分大小寫
下面的搜索結果,NOLogin 和 nologin 都搜索出來了
若是不加 i 參數,會嚴格按照大小寫來搜索
參數 v 是取反的意思
通常來講,grep 'nologin' passwd 是把包含nologin的數據行篩選出來
如圖,使用 v 參數,那麼效果就是把不包含nologin的數據行篩選出來
就是把與篩選條件相反的結果篩選出來的意思
參數 -r 能夠遍歷目錄裏面全部的子文件和子目錄裏面的文件
grep 通常是對文件內容進行篩選,使用對象是文件不能是目錄
可是 r 參數的意思是,能夠遍歷目錄裏面的全部文件和子目錄裏面的文件內容
而後篩選出全部包含關鍵詞的數據行
因此使用 r 參數就能夠對目錄進行 grep 操做
如圖,grep -r 'root' /etc/ > /tmp/grep.log
意思是,遍歷/etc/目錄裏面全部文件,包括子目錄裏面的文件
篩選出全部的包含關鍵字 'root' 的數據行
而後重定向,也就是說寫入 grep.log 文件裏面
而後 grep passwd /tmp/grep.log
意思是從 grep.log 文件裏面篩選出全部包含 passwd 關鍵字的數據行
關於grep後面的關鍵字加不加引號
還有一個參數 A+數字n,能夠顯示關鍵字數據行和下面的n行
例子,如圖, grep -nA2 'root' passwd
這條命令會把包含關鍵字 root 的數據行都篩選出來
由於A後面的數字是2,因此還會顯示root數據行下面的兩行
如圖,第一行數據行包含root,這一行下面的兩行也會篩選出來
而後找到第二行包含root關鍵字的數據行
而後把第二行root數據行下面的兩行也篩選出來,以此類推
除了參數 A,還有參數 B
區別是,A+數字n 能夠篩選出關鍵字行和該行的下面 n 行
而 B+數字n 就能夠篩選出關鍵字行和該行的上面 n 行
如圖,第一行root數據行上面沒有數據,由於這一行上面原本就沒有數據行了
第二行root數據行和該行的上面兩行數據都被篩選出來了
還有參數 C+數字n
A是篩選下面n行,B是篩選上面n行,C能夠上下各n行
如圖,grep -nC2 'root' passwd
首先,能夠把 root 關鍵字的行篩選出來
而後還能夠把每一行 root數據行 的上面2行和下面2行也篩選出來
第一個root數據行由於上面沒有數據因此沒有顯示
第二個root數據行的上下2行都被篩選出來了
grep '[0-9]' passwd
其中 [0-9] 表示0到9裏面任意一個數字
這個篩選條件表示全部數據行裏面,任何一行存在0-9任意一個數字的數據行都會被篩選
也就是說,任何存在數字的數據行都會被篩選
若是想篩選出不存在數字的行
可使用 grep -v '[0-9]' passwd
參數 v 是取反,這樣就會把沒有數字的行篩選出來
上圖的篩選條件是 '^#'
符號 ^ 表示 以...開頭,因此 ^# 就表示以 # 開頭
這條命令的意思就是 篩選出以 # 開頭的數據行
能夠看到,下面的數據行全都是以#開頭的
若是使用 -v 參數就能夠把 不以#開頭的行篩選出來
符號 ^ 有兩種含義,在方括號[]外面的含義是 以...開頭
在方括號[]裏面的含義是 非 的意思
如圖,grep '[^0-9]' inittab
這裏 ^ 的位置是在方括號[]裏面,因此意思是 非
那麼 [^0-9] 就表示 非 0-9 任意一個數字
也就是非數字的意思
看下面的篩選內容,能夠看到,非數字全都紅色高亮顯示
而數字則是白色,說明全部數字都不是關鍵字
如圖,grep '^[^0-9]' inittab
這裏篩選條件是 '^[^0-9]'
由於 ^ 在方括號[]外面時候的含義是 以...開頭 的意思
[^0-9] 是非數字的意思
因此 '^[^0-9]' 就表示 以非數字開頭的數據行
看下面篩選出來的數據行,全都是非數字開頭的
如圖,使用 v 參數取反結果
能夠篩選出 以數字開頭的數據行
還有一點,使用取反操做的時候,篩選關鍵字是不會高亮顯示的
非取反操做的時候纔會高亮顯示關鍵字
如圖,篩選條件是 'r.o' ,符號 . 表明一位字符
一位字符能夠是任意字符
r.o 意思就是 r 開頭,o 結尾,中間能夠是任意一位字符
看下面的篩選結果
高亮顯示的關鍵字,有 roo,rao,r.o
全部關鍵字都是r開頭o結尾,中間任意一位字符
這裏的篩選條件是 'o*o'
右邊的 o 表示關鍵字是以 o 結尾的
左邊的 o* 表示任意個 o
o* 表示 0-n 個 o ,若是爲0,就是沒有 o
結合起來,篩選條件意思是,關鍵字就是 任意個o + o
看下面篩選結果,有一個o的,這就是左邊o*爲0個o的結果
有兩個o的,這就是左邊 o* 爲 1 的結果
左邊也能夠有更多個o,若是有這樣的數據行的話
還能夠把 * 和 . 結合起來使用
符號 . 表明一位字符
符號 x* 表明 0-n 個 x
那麼 .* 就表明 0-n 個一位字符,也就是任意長度的字符
如圖,篩選條件是 'aming.*bash'
這表示,以 aming 開始
以 bash 結束
中間是 .* 表明任意長度的字符
符合這個格式的關鍵詞數據行會被篩選出來
結果就是 aming開始,而後任意字符串,而後bash結尾的關鍵字
還可使用花括號{}指定範圍
如圖 'o{2}' 表示篩選出o連續出現兩次的關鍵字的數據行
之因此加轉義字符 \ 是由於在grep裏面,花括號{}是不識別的
想令花括號{}被識別產生做用就須要轉義一下
使用 egrep 就能夠不用轉義,由於 egrep 是支持花括號的
如圖,使用 egrep 的時候,就不須要寫轉義符
如圖 grep -E 就至關於在使用 egrep
參數 -E 就表示使用的是 egrep
因此也能夠不須要轉義字符
如圖,能夠把 oo 用小括號括起來,表示這是一個總體
後面使用{2}表示連續出現兩次
那麼 oo 連續出現兩次就是 oooo
看篩選結果,關鍵字就是 oooo
使用小括號的時候,也須要用 -E 或者 egrep,由於grep不識別小括號
否則就須要用轉義字符轉義小括號
特殊符號 + 做用跟 * 差很少
它們的區別是 *表示0-n ,+ 表示 1-n
星號最小個數是0,也就是沒有,+的最小個數是1,也就是最少要有一個相關字符
如圖,關鍵字條件是 'o+t'
o+ 表示關鍵字左邊最少有 1個 o 或者 n個 o
右邊以 t 結尾
看篩選結果,oot, 左邊是2個o,右邊以 t 結尾
還有一個問題,egrep也是不識別 + 號的,使用須要用轉義字符
或者使用 egrep 或 -E 就能夠直接識別,不用轉義
如圖,特殊符號 ? 號, 表示 0 或 1
上圖,o? 表示 0個o 或者 1個o
意思就是右邊以 1o 結尾,左邊能夠有0個或者1個o
看下面篩選結果有 1o,o1o
1o 就是左邊有0個o,o1o就是左邊有1個o
要使用?號,也是須要用 egrep 或者 -E
符號 | 是 或 的意思,使用這個功能也須要使用 egrep 或者 -E 參數
如圖,第一行命令,篩選 root或者Bus或者997的關鍵字出來
下面能夠看到,root,Bus,997關鍵字都高亮顯示了
第二條命令,-E後面添加了一個 i 參數
意思是忽略大小寫
篩選條件裏面的 bus或者root,能夠篩選出任意字母是大寫或者小寫的
好比這裏,篩選條件寫了 bus
可是篩選結果出現了 Bus ,若是不用 i 參數
bus裏面任意一個或者幾個字母若是跟條件處的大小寫不一致
就不會被篩選出來,如今能夠篩選任意字母大小寫的 bus 出來
相關文章
1.
正則介紹_grep上& grep中 & grep下
2.
26.正則介紹 grep上 中 下
3.
正則介紹、grep介紹
4.
正則介紹 grep
5.
9.1 正則介紹_grep上 9.2 grep中 9.3 grep下
6.
9.1 正則介紹_grep(上);9.2 grep(中);9.3 grep(下)
7.
正則介紹:grep和egrep
8.
正則介紹以及grep
9.
9.1 正則介紹_grep(上)
10.
正則介紹 、grep、egrep工具
更多相關文章...
•
C# 正則表達式
-
C#教程
•
Scala 正則表達式
-
Scala教程
•
Java Agent入門實戰(一)-Instrumentation介紹與使用
•
Tomcat學習筆記(史上最全tomcat學習筆記)
相關標籤/搜索
介紹
正則
grep
上上下下
中介
簡要介紹
據介紹
01-介紹
介紹性
我的介紹
正則表達式
Redis教程
SQLite教程
PHP 7 新特性
註冊中心
0
分享到微博
分享到微信
分享到QQ
每日一句
每一个你不满意的现在,都有一个你没有努力的曾经。
最新文章
1.
吳恩達深度學習--神經網絡的優化(1)
2.
FL Studio鋼琴卷軸之工具菜單的Riff命令
3.
RON
4.
中小企業適合引入OA辦公系統嗎?
5.
我的開源的MVC 的Unity 架構
6.
Ubuntu18 安裝 vscode
7.
MATLAB2018a安裝教程
8.
Vue之v-model原理
9.
【深度學習】深度學習之道:如何選擇深度學習算法架構
本站公眾號
歡迎關注本站公眾號,獲取更多信息
相關文章
1.
正則介紹_grep上& grep中 & grep下
2.
26.正則介紹 grep上 中 下
3.
正則介紹、grep介紹
4.
正則介紹 grep
5.
9.1 正則介紹_grep上 9.2 grep中 9.3 grep下
6.
9.1 正則介紹_grep(上);9.2 grep(中);9.3 grep(下)
7.
正則介紹:grep和egrep
8.
正則介紹以及grep
9.
9.1 正則介紹_grep(上)
10.
正則介紹 、grep、egrep工具
>>更多相關文章<<