grep egrep區別
創新互聯公司是一家專業的成都網站建設公司,我們專注成都做網站、成都網站設計、網絡營銷、企業網站建設,友情鏈接,1元廣告為企業客戶提供一站式建站解決方案,能帶給客戶新的互聯網理念。從網站結構的規劃UI設計到用戶體驗提高,創新互聯力求做到盡善盡美。
grep 默認不支持擴展 但可以通過-E 選擇來支持擴展正則
egrep 支持擴展正則
關于正則與擴展正則的區別可以看我另一篇shell 正則的介紹
文件處理順序 以行為單位,逐行進行處理
默認只輸出與表達式相匹配的文本行
基本用法
- 格式1:egrep [選擇] '正則表達式' 文件
- 格式2:前置命令 | egrep [選擇] '正則表達式'
? egrep命令工具 (擴展正則命令)
? 常用命令選項
?grep 正則表達式,用來查找過濾文檔的工具符號
grep "root" user //在user文檔中查找有單詞root的行
grep "^root" user //在user文檔中查找以單詞root開頭的行
grep "bash " user //查找空行
grep "^ " user //查找以空格開頭的行
grep "[rot]" user //查找字母r或者o或者t
grep "roo[tn]" user //查找root或者roon
grep "[^rot]" user //查找字母r或者o或者t之外的內容
grep "[a-z]" user //查找小寫字母
grep "[A-Z]" user //查找大寫字母
grep "[a-Z]" user //查找所有字母
grep "[0-9]" user //查找數字
grep "r..t" user //查找以r開頭t結尾中間有2個任意字符的單詞
grep "r. " user //查找以r開頭后面任意字符 相當手通配符
grep "ro*" user //查找以r開頭后面有或沒有字母o的單詞,o可以出現任意次
grep "o{1,2}" user //查找o出現1次到2次的行
grep "o{2,3}" user //查找o出現2次到3次的行
grep "o{2}" user //查找o出現2次的行
grep "o{1,} " user //查找o出現1次以及1次以上
grep "(:0){2}" user //查找:0(數字零)連續出現2次的行
擴展正則
egrep "o+" user //查找o出現1次以及1次以上
egrep "o?" user //查找o出現0次或1次
egrep "o{1,2}" user //查找o出現1次到2次的行
egrep "o{2,3}" user //查找o出現2次到3次的行
egrep "o{2}" user //查找o出現2次的行
egrep "o{1,}" user //查找o出現1次以及1次以上
egrep "(:0){2}" user //查找:0(數字零)連續出現2次的行
egrep "bash|nologin" user //查找bash或者nologin
egrep "\bthe\b" a //查找單詞the,前后是空格或者特殊符號
案例:
正則表達式匹配練習
1)典型的應用場合:grep、egrep檢索文本行
grep命令不帶-E選項時,支持基本正則匹配模式。比如“word”關鍵詞檢索、“^word”匹配以word開頭的行、“word$”匹配以word結尾的行……等等。
輸出以“r”開頭的用戶記錄:
輸出以“localhost”結尾的行:
若希望在grep檢索式同時組合多個條件,比如輸出以“root”或者以“daemon”開頭的行:
而若若使用grep -E或egrep命令,可支持擴展正則匹配模式,能夠自動識別 |、{} 等擴展正則表達式中的特殊字符,用起來更加方便,比如:
或者
使用grep -E 與 使用egrep命令完全等效,推薦使用后者,特別是涉及到復雜的正則表達式的時候。
2)grep、egrep命令的-q選項
選項 -q 表示 quiet(靜默)的意思,結合此選項可以只做檢索而并不輸出,通常在腳本內用來識別查找的目標是否存在,通過返回狀態 $? 來判斷,這樣可以忽略無關的文本信息,簡化腳本輸出。
比如,檢查/etc/hosts文件內是否存在192.168.4.4的映射記錄,如果存在則顯示“YES”,否則輸出“NO”,一般會執行:
這樣grep的輸出信息和腳本判斷后的提示混雜在一起,用戶不易辨別,所以可以改成以下操作:
是不是清爽多了,從上述結果也可以看到,使用 -q 選項的效果與使用 /dev/null的效果類似。
3)基本元字符 ^、$ —— 匹配行首、行尾
輸出注釋的配置行(以#開頭的行):
統計本地用戶中登錄Shell為“/sbin/nologin”的用戶個數:
提示: -m10僅在文件的前10行中過濾,后面的行不再過濾。
結合 -c 選項輸出匹配的行數
使用 -c 選項可輸出匹配行數,這與通過管道再 wc -l的效果是相同的,但是寫法更簡便。比如,統計使用“/bin/bash”作為登錄Shell的正常用戶個數,可執行:
或者
4)基本元字符 . —— 匹配任意單個字符
以/etc/rc.local文件為例,確認文本內容:
輸出/etc/rc.local文件內的空行(用 –v 選項將條件取反):
5)基本元字符 +、?、 —— 目標出現的次數*
還以/etc/rc.local文件為例:
輸出包括 f、ff、ff、……的行,即“f”至少出現一次:
輸出包括init、initial的行,即末尾的“ial”最多出現一次(可能沒有):
輸出包括stu、stuf、stuff、stufff、……的行,即末尾的“f”可出現任意多次,也可以沒有。重復目標只有一個字符時,可以不使用括號:
輸出所有行,單獨的“.*”可匹配任意行(包括空行):
輸出/etc/passwd文件內“r”開頭且以“nologin”結尾的用戶記錄,即中間可以是任意字符:
6)元字符 {} —— 限定出現的次數范圍
創建一個練習用的測試文件:
輸出包括ababab的行,即“ab”連續出現3次:
輸出包括abab、ababab、abababab的行,即“ab”連續出現2~4次:
輸出包括ababab、abababab、……的行,即“ab”最少連續出現3次:
7)元字符 [] —— 匹配范圍內的單個字符
還以前面的測試文件bracet.txt為例:
輸出包括abc、abd的行,即前兩個字符為“ab”,第三個字符只要是c、d中的一個就符合條件:
輸出包括大寫字母的行,使用[A-Z]匹配連續范圍:
8)單詞邊界匹配
以文件/etc/rc.local為例:
輸出包括單詞“init”的行,文件中“initialization”不合要求:
或者:
輸出包括以“ll”結尾的單詞的行,使用 匹配單詞右邊界:
或者:
9)多個條件的組合
通過dmesg啟動日志查看藍牙設備、網卡設備相關的信息:
Linux命令大小寫敏感,一般命令都是小寫
在 Linux 系統中,“ll”命令并不是它的標準命令,“ls”才是 Linux 系統的標準命令,其功能是列出當前子目錄下的文件(不包括隱藏文件)。
之所以有“ll”命令,是因為在 Linux 系統中有一個定義別名命令(alias)的功勞。即:
alias ll 'ls -al'
其中:
-a 選項表示列出所有文件(包括隱藏文件)
--all的縮寫,顯示所有的文件,包括隱藏文件(以.開頭的文件)。
l 選項表示按照長格式(long)列出文件名,包括:文件的權限、文件類型(是文件還是子目錄)、文件的建立日期、文件大小,等等。而這些信息是 ls 命令不能夠顯示出來的。
所以只要定義好了“ll”,以后輸入該命令后,即可顯示文件的很多信息。
-A --almost-all的縮寫,顯示所有的文件,包括隱藏文件,但不包括表示當前目錄.和上級目錄..這兩個文件。
跳動到第一個非空位置 ^
下面是我用vim的時候做的筆記........你可以看一下。
-------------------------------------------------------------
Linux vim 操作快捷鍵
----------------------
1、上k下j左h右l
2、編輯i、a、s
3、視圖v
4、返回普通模式 esc、ctrl+c、ctrl+[
5、執行命令 :
6、添加新頁 tabnew 頁面名
7、拷貝 y,p 或者 +y,+p
8、切換頁面 gt、gT (go tab)
9、分割頁面shift+; -(sp 文件名 或 vs 文件名)
10、切換面板ctrl+w(表示進入切換狀態)+[h,j,k,l](某一個就行)
11、保存 w
12、退出 q
13、保存退出 wq
14、全部退出 qa
15、按單詞移動 w,e,b
16、單行按字符查找 f+字符(;繼續 ,上一個)或者t代替f也可以
17、撤銷 u
18、跳動到第一個非空位置 ^,跳動到行尾部$
19、跳動到第一個位置 0
20、按括號匹配查找 [[ , ]]
21、跳動到代碼位置shift + L (尾部), H(gg頭部) , M(中部)
22、跳到指定行 :120
1、正向翻頁 ctrl+f
2、反向翻頁 ctrl+b
3、半屏翻頁 ctrl +d 、 ctrl + u
4、剪切 x, 刪除 d
5、撤銷 u,重做ctrl+r
6、刪除區間 10,16d(刪除10~16行內容,%d刪除全部內容)
7、設置高亮搜索 set hls
8、忽略大小寫搜索 set ic
9、一次搜索多個 \| (如:/main|\max\|swap)
10、查看man : K
11、查看ascii碼值:ga
12、自動排版 光標移動到{位置,切換到可視化模式%=
13、左右縮進:切換到可視化 ,
14、自動補齊: ctrl+n 或者 ctrl+p
lsof全名list opened files,也就是列舉系統中已經被打開的文件。我們都知道,linux環境中,任何事物都是文件,
設備是文件,目錄是文件,甚至sockets也是文件。所以,用好lsof命令,對日常的linux管理非常有幫助。
lsof是linux最常用的命令之一,通常的輸出格式為:
引用
常見包括如下幾個字段:更多的可見manual。
1、COMMAND
默認以9個字符長度顯示的命令名稱。可使用+c參數指定顯示的寬度,若+c后跟的參數為零,則顯示命令的全名
2、PID:進程的ID號
3、PPID
父進程的IP號,默認不顯示,當使用-R參數可打開。
4、PGID
進程組的ID編號,默認也不會顯示,當使用-g參數時可打開。
5、USER
命令的執行UID或系統中登陸的用戶名稱。默認顯示為用戶名,當使用-l參數時,可顯示UID。
6、FD
是文件的File Descriptor number,或者如下的內容:
(這里很難翻譯對應的意思,保留英文)
引用
文件的File Descriptor number顯示模式有:
引用
7、TYPE
引用
IPv4 IPv4的包;
IPv6 使用IPv6格式的包,即使地址是IPv4的,也會顯示為IPv6,而映射到IPv6的地址;
DIR 目錄
LINK 鏈接文件
詳情請看manual中更多的注釋。
8、DEVICE
使用character special、block special表示的設備號
9、SIZE
文件的大小,如果不能用大小表示的,會留空。使用-s參數控制。
10、NODE
本地文件的node碼,或者協議,如TCP等
11、NAME
掛載點和文件的全路徑(鏈接會被解析為實際路徑),或者連接雙方的地址和端口、狀態等
常用示例:
1.顯示開啟文件/home/oracle/10.2.0/db_1/bin/tnslsnr的進程
2.知道22端口現在運行什么程序
3.顯示init進程現在打開的文件
6.依照文件夾/home/oracle來搜尋,但不會打開子目錄,用來顯示目錄下被進程開啟的文件
顯示內容太多了,不顯示了
lsof -n 不將IP轉換為hostname,缺省是不加上-n參數
關注:
進程調試命令:truss、strace和ltrace
進程無法啟動,軟件運行速度突然變慢,程序的"SegmentFault"等等都是讓每個Unix系統用戶頭痛的問題,而這些問題都可以通過使用truss、strace和ltrace這三個常用的調試工具來快速診斷軟件的"疑難雜癥"。
網站名稱:linux一鍵命令解析,linux常用命令心得
分享路徑:http://vcdvsql.cn/article46/hshceg.html
成都網站建設公司_創新互聯,為您提供微信公眾號、網站維護、小程序開發、面包屑導航、移動網站建設、網頁設計公司
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯