Linux-Grep命令詳解

2020-08-14 19:09:34

一、基礎的grep命令

1.1 -A -B -C參數的使用

命令格式:grep -A m 「關鍵字」 xxxx(檔案)
顯示出關鍵字所在行以及關鍵字所在的以下m行內容
[root@localhost ~]# grep -A 10 「game」 /etc/passwd #搜尋出關鍵字「game」 並列印出關鍵字所在的行以及關鍵字以下10行

在这里插入图片描述

命令格式:grep -B m 「關鍵字」 xxxx(檔案)
顯示出關鍵字所在行以及關鍵字所在的以上m行內容

[root@localhost ~]# grep -B 6 「sync」 /etc/passwd #搜尋出關鍵字「sync」並列印出關鍵字所在行以及關鍵字以上6行
在这里插入图片描述

只顯示了之上5行說明再其上只有5行了;

命令格式:grep -C m 「關鍵字」 xxxx(檔案)
顯示出關鍵字所在行以及關鍵字所在的上下m行內容
[root@localhost ~]# grep -C 6 「sync」 /etc/passwd #搜尋出關鍵字「sync」並列印出關鍵字所在行以及關鍵字的上下6行
在这里插入图片描述

[root@localhost ~]# grep 「xiaohua」 /etc/passwd /etc/shadow /etc/group /etc/gshadow
在多個檔案上查詢關鍵字

在这里插入图片描述

1.2 -l 參數的使用

命令格式:grep -l 「關鍵字」 xxxx(檔案)
只顯示包含關鍵字的檔名
在这里插入图片描述

在一堆檔案中尋找;不能在目錄中尋找;

1.3 -n 參數的使用

命令格式:grep -n 「關鍵字」 xxxx(檔案)
顯示出關鍵字所處檔案中的行號

[root@localhost ~]# grep -n 「xiaohua」 /etc/passwd /etc/shadow /etc/group /etc/gshadow
在这里插入图片描述

[root@localhost ~]# grep "xiaowang" /etc/passwd | sed 's/xiaogang/xiaowang/g' #查詢出檔案的關鍵字的資訊並作出相應的替換 
xiaowang : x:503:503::/home/xiaowang:/bin/bash  
 's/xiaogang/xiaowang/g' #Linux正則表達式  s表示行數例如10s,100s,單獨一個s說明說有的行;  用xiaogang去替換xiaowang   g 表示結束
[root@localhost ~]# ls />1.txt && cat 1.txt |grep "etc"  #採用grep組合命令查詢是否有etc的目錄 
ls /  (檢視」/「目錄下的檔案)  >1.txt(重定向到1.txt) &&(並且) cat 1.txt(檢視1.txt) |(管道符)grep "etc"(查詢etc)

1.4 awk命令與grep命令組合

awk命令主要用來查詢檔案的列,具體請看Linux-awk命令詳解
[root@localhost ~]# awk -F : ‘{print $1}’ /etc/passwd #查詢/etc/passwd 中以:爲分隔的第一列;
在这里插入图片描述

[root@localhost ~]# df -h | awk ‘{print $1 " " $2}’ #df -h 檢視磁碟使用情況 並輸出第一列和第二列
在这里插入图片描述

[root@localhost ~]# ifconfig | grep Bcast | awk ‘{print $2}’|awk -F : ‘{print $2}’ #檢視ip 地址資訊
在这里插入图片描述

1.5 -v 參數的使用

命令格式:grep -v 「關鍵字」 xxxx (檔案)
過濾掉檔案中含有關鍵字的行
[root@localhost ~]# grep -v 「nologin」 /etc/passwd >grep-v.txt && cat grep-v.txt #過濾掉」nilogin「
在这里插入图片描述

[root@localhost ~]# grep -v 「nologin」 /etc/passwd |sed ‘s/x/xxx/g’ >grep-v.txt && cat grep-v.txt #把x替換成xxx
在这里插入图片描述

1.6 ^參數的使用

命令格式: grep 「^關鍵字」 xxxx(檔名)
== 找出並顯示以關鍵字開頭的檔案資訊==
[root@localhost ~]# grep 「^user」 /etc/passwd #輸出檔案資訊中以’‘user’'開頭的內容
在这里插入图片描述

1.7 $ 參數的使用

==命令格式:grep 「關鍵字KaTeX parse error: Expected 'EOF', got '#' at position 54: …ot@localhost ~]#̲ grep "nologin」 /etc/passwd #輸出文件資訊中以nologin結尾的內容
在这里插入图片描述

1.8 ^$參數的使用

命令格式: grep -v 「^$」 xxxx(檔名)
輸出檔案資訊時過濾掉空行
在这里插入图片描述

1.9 -r 參數的使用

命令格式: grep -r -n 「關鍵字」 xxxx(檔名)
==遞回查詢只要包含關鍵字的資訊都能被查詢出 ==
1597374551301.png

1.10 -i參數的使用

命令格式: grep -i 「關鍵字」 xxxx(檔案)
在檢視檔案時,可以忽略關鍵字是否大寫
在这里插入图片描述

1.11 -e參數的使用

命令格式: grep -e 「關鍵字」 xxxx(檔案)
在檢視檔案時,可以多個關鍵字共同進行查詢
在这里插入图片描述
可以與-v同時使用;用來過濾掉更多關鍵字;

1.12 -f參數的使用

命令格式: grep -f xxxx(檔案1) xxxx(檔案2)
在查詢時,以檔案1中的內容爲指定關鍵字進行查詢
在这里插入图片描述

1.13 -c 參數的使用

命令格式: grep -c 「關鍵字」 xxxx(檔案)
查詢出包含關鍵字的資訊後顯示的是含有關鍵字的行數
在这里插入图片描述

二、grep 命令結合正則表達式進行綜合使用

2.1 "."參數的使用

. :效果匹配一個任意的非換行符字元
在这里插入图片描述

2.2 」 * 「參數的使用

」 * 「 :效果匹配0個或多個資訊
例如a* :表示含有0個a或多個a
aa* :表示含有一個a或多個a
在这里插入图片描述

2.3 [] 參數的使用

#: 匹配一個指定範圍內的字元
在这里插入图片描述

a-z :所有小寫字母
0-9:所有數位
^[A-Z]:所有大寫字母開頭
a-zA-Z:所有字母
[^abc]:匹配不包含^後的任意字元,是對[abc]的取反

2.4 grep 命令結合指令碼修改組態檔

在这里插入图片描述

0-9:所有數位
^ [ A-Z]:所有大寫字母開頭
a-zA-Z:所有字母
[ ^ abc]:匹配不包含^後的任意字元,是對[abc]的取反