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.
resiprocate 之repro使用
2.
Ubuntu配置Github並且新建倉庫push代碼,從已有倉庫clone代碼,並且push
3.
設計模式9——模板方法模式
4.
avue crud form組件的快速配置使用方法詳細講解
5.
python基礎B
6.
從零開始···將工程上傳到github
7.
Eclipse插件篇
8.
Oracle網絡服務 獨立監聽的配置
9.
php7 fmp模式
10.
第5章 Linux文件及目錄管理命令基礎
本站公眾號
歡迎關注本站公眾號,獲取更多信息
相關文章
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工具
>>更多相關文章<<