Linux常用中間命令grep,less詳解

grep命令

grep (縮寫來自Globally search a Regular Expression and Print)是一種強大的文本搜索工具,它能使用特定模式匹配(包括正則表達式)搜索文本,並默認輸出匹配行。

用於查找內容包含指定的範本樣式的文件,如果發現某文件的內容符合所指定的範本樣式,預設 grep 指令會把含有範本樣式的那一列顯示出來。若不指定任何文件名稱,或是所給予的文件名為 -,則 grep 指令會從標準輸入設備讀取數據。

語法格式

grep [option] pattern file


參數選項



-c\t:計算找到‘搜索字符串’的行數
-o\t:\t指數出匹配的內容
-i\t:\t不區分大小寫
-n\t:\t顯示匹配內容的行號
-r\t\t:當指定要查找的是目錄而非文件時,必須使用這項參數,否則grep命令將回報信息並停止動作
-v\t\t:反向選擇,即沒有‘搜索字符串’內容的行
-l\t:\t列出文件內容符合指定的範本樣式的文件名稱
-E\t\t:擴展 grep,即 egrep,可以使用擴展正則表達式

--color=auto\t搜索關鍵詞顯示顏色
-V\t:\t顯示軟件版本信息


grep正則表達式元字符集



\\^\t:錨定行的開始\t如:'^grep' 匹配所有以 grep 開頭的行
$\t:錨定行的結束\t如:'grep$' 匹配所有以 grep 結尾的行
.\t:匹配一個非換行符的字符\t如:'gr.p' 匹配 gr 後接一個任意字符,然後是 p
*\t:匹配零個或多個先前字符\t如:' *grep' 匹配所有一個或多個空格後緊跟 grep 的行。 .* 一起用代表任意字符
[ ]\t:匹配一個指定範圍內的字符\t如:'[Gg]rep' 匹配 Grep 和 grep
[^ ]\t:匹配一個不在指定範圍內的字符\t如:'[^A-FH-Z]rep' 匹配不包含 A-F 和 H-Z 的一個字母開頭,緊跟 rep 的行
\\(..\\)\t:標記匹配字符\t如:'(love)',love 被標記為1
\\\\>\t:錨定單詞的結束\t如:'grep\\>' 匹配包含以grep結尾的單詞的行
x{m}\t:連續重複字符 x,m 次\t如:'o{5}' 匹配包含連續5個o的行
x{m,}\t:連續重複字符 x,至少 m 次\t如:'o{5,}' 匹配至少連續有5個 o 的行
x{m,n}\t:連續重複字符 x,至少 m 次,不多於 n 次\t如:'o{5,10}' 匹配連續 5-10 個 o 的行

\\w:\t匹配一個文字和數字字符也就是 [A-Za-z0-9]\t如:'G\\w*p' 匹配以 G 後跟零個或多個文字或數字字符,然後是p
\\W:\tw 的反置形式,匹配一個非單詞字符\t如:點號句號等。\\W* 則可匹配多個
\\b\t:單詞鎖定符\t如: '\\bgrep\\b' 只匹配 grep,即只能是 grep 這個單詞,兩邊均為空格

示例1

通過grep命令顯示文件和輸入流中和參數匹配的行,如顯示文件/etc/passwd文件中包含文本root的所有行:

1、首先查看/etc/passwd文件中的內容

[root@localhost etc]# cat /etc/passwd
Linux常用中間命令grep,less詳解

2、通過grep命令查詢

[root@localhost etc]# grep root /etc/passwd
Linux常用中間命令grep,less詳解

示例2

顯示文件/etc 文件夾中所有包含root的文件

[root@localhost ~]# grep root /etc/*
Linux常用中間命令grep,less詳解

示例3

搜索某一文件中,顯示包含某一字符串的行數

1、查看test1.txt文件內容

[root@localhost mytest]# vi test1.txt
Linux常用中間命令grep,less詳解

2、查詢test1.txt文件中有多少行包含“the”字符串

[root@localhost mytest]# grep -c the test1.txt
Linux常用中間命令grep,less詳解

3、查詢test1.txt文件中有多少行包含“the”字符串的所有文本

[root@localhost mytest]# grep -i the test1.txt 
Linux常用中間命令grep,less詳解

4、查詢test1.txt文件中有多少行包含“the”字符串的所有文本的行號

[root@localhost mytest]# grep -n the test1.txt 
Linux常用中間命令grep,less詳解

less命令

當要查看的文件過大或者內容多得需要滾動屏幕的時候,可以使用less命令。

命令格式:

less [參數] 文件

命令功能:

less 與 more 類似,但使用 less 可以隨意瀏覽文件,而 more 僅能向前移動,卻不能向後移動,而且 less 在查看之前不會加載整個文件。

命令參數

-b  設置緩衝區的大小
-e 當文件顯示結束後,自動離開
-f 強迫打開特殊文件,例如外圍設備代號、目錄和二進制文件
-g 只標誌最後搜索的關鍵詞
-i 忽略搜索時的大小寫
-m 顯示類似more命令的百分比
-N 顯示每行的行號
-o 將less 輸出的內容在指定文件中保存起來

-Q 不使用警告音
-s 顯示連續空行為一行
-S 行過長時間將超出部分捨棄
-x 將“tab”鍵顯示為規定的數字空格
/字符串:向下搜索“字符串”的功能
?字符串:向上搜索“字符串”的功能
n:重複前一個搜索(與 / 或 ? 有關)
N:反向重複前一個搜索(與 / 或 ? 有關)
b 向後翻一頁
d 向後翻半頁
h 顯示幫助界面
Q 退出less 命令
u 向前滾動半頁
y 向前滾動一行
空格鍵 滾動一行
回車鍵 滾動一頁
[pagedown]: 向下翻動一頁
[pageup]: 向上翻動一頁

示例1

查看test1.txt文件

[root@localhost mytest]# less test1.txt 
Linux常用中間命令grep,less詳解

less命令可以將內容分屏顯示,按空格鍵可查看下一屏,B鍵查看上一屏,Q鍵退出。

示例2

ps查看進程信息並通過less分頁顯示

[root@localhost mytest]# ps -ef |less
Linux常用中間命令grep,less詳解

示例3

瀏覽多個文件

[root@localhost mytest]#less less log1.log log2.log

輸入 :n後,切換到 log1.log

輸入 :p 後,切換到2.log

示例4

grep 和less配合查詢,當查詢內容過多時,可以提供分頁

[root@localhost mytest]# grep a test1.txt | less
Linux常用中間命令grep,less詳解

全屏導航

ctrl + F - 向前移動一屏

ctrl + B - 向後移動一屏

ctrl + D - 向前移動半屏

ctrl + U - 向後移動半屏


分享到:


相關文章: