1. 程式人生 > >Linux Shell基礎 管道符和grep命令

Linux Shell基礎 管道符和grep命令

概述

管道符:管道符使用"丨"代表。如"命令1丨命令2"。表示命令 1 的正確輸出作為命令 2 的操作物件。命令 1 必須有正確輸出,而命令 2 必須可以處理命令 1 的輸出結果。

grep命令:在檔案中提取和匹配符合條件的字串行。

管道符

1. 在使用"||"命令査看/etc/ 目錄時顯示的內容非常多,只能看到最後的內容,而不能看到前面輸出的內容,此時可以用管道符將輸出的結果作為more的操作物件,讓more 命令分屏顯示檔案內容,命令如下:

[[email protected] ~]# ll -a /etc/|more

 2. 查詢一下本地所有網路連線,提取包含 ESTABLISHED(已建立連線)的行,命令如下:

[[email protected] ~]# netstat -an | grep "ESTABLISHED"

3. 查詢具體的網路連線數量,再使用wc命令統計行數

[[email protected] ~]# netstat -an | grep "ESTABLISHED" | wc-l

 grep命令

 grep 的作用是在檔案中提取和匹配符合條件的字串行。命令格式如下:
[[email protected] ~]# grep [選項] "搜尋內容" 檔名

選項:

  • -A 數字:列出符合條件的行,並列出後續的 n 行;
  • -B 數字:列出符合條件的行,並列出前面的 n 行;
  • -c:統計找到的符合條件的字串的次數;
  • -i:忽略大小寫;
  • -n:輸出行號;
  • -v:反向査找;
  • --color=auto:搜尋出的關鍵字用顏色顯示;

查詢使用者資訊檔案/etc/passwd中有多少可以登入的使用者

[[email protected] ~]# grep "/bin/bash" /etc/passwd

grep 是行提取命令,所以只要一行資料中包含"搜尋內容",就會列出整行的資料。在這個例子中,會在 /etc/passwd 檔案中列出所有包含"/bin/bash"的行,而我們已知只有可登入使用者的 Shell 才是"/bin/bash",而偽使用者的 Shell 是"/sbin/nologin",所以這條命令會列出當前系統中所有可以登入的使用者。

列出符合條件的行,並列出後續的 n 行

查詢包含"root"的行,並列出後續的3行

[[email protected] ~]# grep -A 3 "root" /etc/passwd

列出符合條件的行,並輸出行號

查詢可以登入的使用者,並顯示行號

[[email protected] ~]# grep -n "/bin/bash" /etc/passwd

列出符合條件的行,再反向査找

查詢不包含"/bin/bash"的行,其實就是列出所有的偽使用者

[[email protected] ~]# grep -v "/bin/bash" /etc/passwd

 grep和find命令的區別

find命令

find 命令用於在系統中搜索符合條件的檔名,如果需要模糊査詢,則使用萬用字元進行匹配。find 命令也使用 -regex 選項通過正則表示式規則進行匹配查詢,而正則表示式是模糊匹配。

grep命令

grep 命令用於在檔案中搜索符合條件的字串,如果需要模糊査詢,則使用正則表示式進行匹配。搜尋時字串是包含匹配的。grep 命令和 find 命令不一樣,使用 grep 命令在檔案中査找符合條件的字串時,只要搜尋的內容包含在資料行中,就會列出整行內容。