在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何使用grep命令

CHANBAEK ? 來源:myfreax ? 作者:myfreax ? 2022-12-06 16:43 ? 次閱讀

grep命令的全稱是全局正則表達式打印,它是Linux中功能最強大且最常用的命令之一。

grep在一個或多個輸入文件中搜索與指定模式匹配的行,并將匹配行寫入標準輸出。如果未指定文件,grep則從標準輸入讀取內容。

grep讀取的標準輸入通常是另一個命令的輸出。在本教程中,我們將通過實際示例向您展示如何使用grep命令,并詳細說明最常用的GNU grep選項。

grep 命令

在開始使用grep命令之前,讓我們先回顧一下grep基本語法。grep命令表達式采用形式grep [OPTIONS] PATTERN [FILE...]。

方括號中的選項是可選的。其中OPTIONS可以零個或多個選項。Grep提供了個用于控制其行為的選項。

PATTERN搜索模式,可以是正則表達式。FILE零個或多個輸入文件名。要能夠搜索文件,運行命令的用戶必須對該文件具有讀取權限。

搜索字符串

grep命令的最基本用法是在文件中搜索字符串。例如,要搜索etc/passwd文件包含字符串bash的行,請運行命令grep bash etc/passwd。

如果字符串包含空格,則需要將其用單引號或雙引號引起來,例如搜索Gnome Display Manager,請運行命令grep "Gnome Display Manager" etc/passwd

grep bash etc/passwd
grep "Gnome Display Manager" etc/passwd
root:x:0:0:root:/root:/bin/bash
myfreax:x:1000:1000:myfreax:/home/myfreax:/bin/bash

grep排除與反轉匹配

要顯示與模式不匹配的行,請使用-v/--invert-match選項。例如,要打印etc/passwd文件中不包含字符串nologin的行。

請運行命令grep -v nologin etc/passwd。

grep -v nologin etc/passwd
root:x:0:0:root:/root:/bin/bash
colord:x:124:124::/var/lib/colord:/bin/false
git:x:994:994:git daemon user:/:/usr/bin/git-shell
myfreax:x:1000:1000:myfreax:/home/myfreax:/bin/bash

grep 搜索標準輸出

除了指定搜索文件之外,您還可以將另一個命令的標準輸出傳遞給grep,然后僅打印與指定模式匹配的行。

例如命令ps -ef | grep www-data將查找系統以www-data用戶運行的進程,可以運行ps命令然后通過管道傳遞給grep進行搜索沒。

你可能沒有注意到命令ps -ef | grep www-data的標準輸出還包含當前grep進程的行。

如果您不希望顯示該行,則可將標準輸出再次通過管道傳遞到另一個grep實例排除grep進程的輸出。例如命令ps -ef | grep www-data | grep -v grep

ps -ef | grep www-data
ps -ef | grep www-data | grep -v grep
www-data 18247 12675  4 16:00 ?        00:00:00 php-fpm: pool www
root     18272 17714  0 16:00 pts/0    00:00:00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn www-data
www-data 31147 12770  0 Oct22 ?        00:05:51 nginx: worker process
www-data 31148 12770  0 Oct22 ?        00:00:00 nginx: cache manager process

遞歸搜索

要使用遞歸搜索模式,請使用-r/--recursive選項。這將搜索指定目錄中的所有文件,并跳過遞歸遇到的符號鏈接。

如果需要要跟蹤所有符號鏈接,請使用-R/--dereference-recursive選項。

例如命令grep -r myfreax.com /etc將在/etc目錄內搜索包含myfreax.com字符串的所有文件。

命令將以文件的路徑為前綴的打印匹配的行,并使用冒號分隔:。你也可以使用-R選項搜索所有符號鏈接的文件。

grep -r myfreax.com /etc
grep -R myfreax.com /etc

僅顯示文件名

要取消默認的grep命令打印的輸出,僅打印包含匹配模式的文件名,可以使用-l/--files-with-matches選項。

例如命令grep -l myfreax.com *.conf將在當前工作目錄中搜索所有以.conf結尾的文件。并僅打印包含字符串myfreax.com的文件名稱。

你也可以組合-l選項與-R選項進行遞歸搜索文件。

grep -l myfreax.com *.conf
grep -Rl myfreax.com /tmp
tmux.conf
haproxy.conf

不區分大小寫

默認情況下grep命令區分大小寫。這意味著將大寫和小寫字符視為不同的字符。

要在搜索時忽略大小寫,請使用-i/--ignore-case選項。例如命令grep Zebra /usr/share/words將搜索Zebra,不顯示任何輸出。

但是,如果使用-i選項執行不區分大小寫的搜索,則它將同時匹配大小寫字母。

grep Zebra /usr/share/words
grep -i Zebra /usr/share/words
zebra
zebra's
zebras

搜索全詞

搜索gnu時,grep還將打印gnu嵌入在較大字詞的行,例如cygnusmagnum。要僅返回指定字符串是整個單詞的行,請使用-w/--word-regexp選項。

單詞字符包括字母數字字符a-zA-Z0-9和下劃線_。所有其他字符都被視為非單詞字符,例如$等。

如果使用-w選項運行與上述相同的命令,grep命令則將僅返回gnu作為單獨單詞的行。

grep gnu /usr/share/words
grep -w gnu /usr/share/words
gnu

顯示行號

要顯示與模式匹配的行號,請使用-n/--line-number選項。使用此選項時,grep將匹配項打印到標準輸出,并以找到的行號作為前綴。

例如命令grep -n 10000 etc/services,將在etc/services文件搜索包含bash字符的行。

以下輸出顯示在10423和10424行中找到的包含10000的行。

grep -n 10000 etc/services
10423:ndmp            10000/tcp
10424:ndmp            10000/udp

匹配統計

要打印與標準輸出匹配的行數,請使用-c/--count選項。在以下示例中,我們統計以/usr/bin/zsh為默認shell的帳戶數量。

grep -c '/usr/bin/zsh' etc/passwd
4

多模式與字符串搜索

grep允許可以使用或運算符組合兩個或多個搜索模式。

默認情況下,grep將模式解釋為基本正則表達式。諸如|之類的元字符會失去其特殊含義,必須使用其反斜杠版本。

如果使用擴展的正則表達式選項-E/--extended-regexp,則不應對或運算符|進行轉義。

在下面的示例中,我們在Nginx錯誤日志文件中搜索單詞fatal,errorcritical匹配的行。

grep 'fatal\\|error\\|critical' /var/log/nginx/error.log
grep -E 'fatal|error|critical' /var/log/nginx/error.log

靜默模式

-q/--quiet選項指示grep不向終端寫入任何內容,通常是標準輸出。如果搜索到匹配的行,grep命令的退出代碼將會是0。

這在檢查文件是否包含指定字符串,并根據結果執行某些操作的shell腳本中使用grep時,這會很有用。

這是在if語句中使用grep靜默模式作為測試命令的示例。

if grep -q PATTERN filename
then
    echo pattern found
else
    echo pattern not found
fi

正則表達式基礎

GNU Grep具有兩個正則表達式功能集,即Basic基本和Extended擴展。默認情況下,grep將模式解釋為基本正則表達式。

^符號表示匹配行首,$符號匹配行尾,. 符號以匹配任意單個字符,[ ]中括號匹配指定范圍的字符,[^ ]以匹配非中括號內的任意字符。

要轉義字符的特殊含義,請使用反斜杠符號\\,例如要匹配符號$,你將以這樣的形式轉義\\$符號。

例如命令grep "^kangaroo" file.txt,將匹配字符串行首是kangaroo的行。命令grep "kangaroo$" file.txt匹配行尾是kangaroo$的行。

grep "^kangaroo" file.txt
grep "kangaroo$" file.txt

命令grep "kan..roo" file.txt匹配kan接著是兩個任意字符,然后是roo的行。命令grep "acce[np]t" file.txt將會匹配acceptaccent的行。

模式co[^l]a將匹配包含co任何字符串a的行,例如coca,cobalt等,但不匹配包含cola的行。

grep "kan..roo" file.txt
grep "acce[np]t" file.txt
grep "co[^l]a" file.txt

擴展的正則表達式

要將模式解釋為擴展的正則表達式,請使用-E/--extended-regexp選項。擴展的正則表達式包括所有基本元字符。以及用于創建更復雜搜索模式的其他元字符。

在指定文件中提取電子郵件地址

grep -E -o "\\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,6}\\b" file.txt

在指定的文件提取IP地址

grep -E -o '(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)' file.txt

-o選項用于僅打印匹配的字符串。

打印匹配行前半與后半部分

要在匹配行之前打印指定數量的行,請使用-B/--before-context選項。要在匹配的行之后打印指定數量的行,請使用-A/--after-context選項。

例如,要在匹配的行之前打印前五行,請運行命令grep -B 5 root etc/passwd。

命令grep -A 5 root etc/passwd在匹配的行之后顯示尾隨五行。這個有點類似在指定位置截斷。

grep -B 5 root etc/passwd
grep -A 5 root etc/passwd

結論

grep命令允許您在文件內部使用搜索模式。如果找到匹配項,則grep將打印包含指定模式的行。請訪問Grep用戶手冊頁面,了解Grep的更多信息。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11469

    瀏覽量

    212891
  • 命令
    +關注

    關注

    5

    文章

    730

    瀏覽量

    22703
  • grep
    +關注

    關注

    0

    文章

    23

    瀏覽量

    4866
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    Linux中grep命令的12個實際例子

    Linux中grep命令的12個實際例子
    發表于 02-08 09:38 ?842次閱讀

    [4.4]--Linux中grep命令

    Linux
    jf_90840116
    發布于 :2023年02月19日 20:39:28

    grep命令搜索字符串之技巧

    insight就能派上用場。但source insight有時候會莫名其妙的無法搜索字符串,可能是工程文件遭到破壞,必須重新創建工程才可以。其實我們也可以用linux下文本搜索工具grep,作者在工作當中
    發表于 12-17 23:34

    linux下的grep命令有什么區別?

    下面兩個命令有什么區別1.grep . "abc" *2.grep . "abc"
    發表于 09-17 16:59

    12個 Linux 中 grep 命令的超級用法實例

    install grep #Debian/Ubuntu $ sudo yum install grep #RHEL/CentOS/Fedora我發現使用現實世界中的真實例子讓你投身其中是讓你接觸grep
    發表于 05-12 08:00

    linux grep命令詳解

    工具,它能使用正則表達式搜索文本,并把匹配的行打印出來。  Unix的grep家族包括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是
    發表于 03-31 10:05

    Linux 中 grep 命令的超級用法實例

    你是否遇到過需要在文件中查找一個特定的字符串或者樣式,但是不知道從哪兒開始?那么,就請grep來幫你吧。
    的頭像 發表于 03-17 09:01 ?4808次閱讀

    使用grep命令需要了解的12個實例

    grep是每個Linux發行版都預裝的一個強有力的文件模式搜索工具。無論何種原因,如果你的系統沒有預裝它的話,你可以很容易的通過系統的包管理器來安裝它(Debian/Ubuntu系中的apt-get和RHEl/CentOS/Fedora系中的yum)。
    發表于 05-12 10:16 ?1251次閱讀

    全面解析Linux的grep命令中正則表達式的用法

    Linux 附帶有 GNU grep 命令工具,它支持擴展正則表達式extended regular expressions,而且 GNU grep 在所有的 Linux 系統中都
    發表于 04-02 14:46 ?628次閱讀

    Linux中用grep命令來搜索單詞及統計匹配的行數

    使用 grep 命令來搜索多個單詞要使用 grep 命令來搜索多個字符串或單詞,我們該怎么做?例如我想要查找 /path/to/file 文件中的 word1、word
    發表于 04-02 14:46 ?756次閱讀

    Linux在在文件中查找文本的Grep命令

    grep命令是(global regular expression print,全局正則表達式輸出)的縮寫,它是Linux中功能最強大且最常用的命令之一。
    的頭像 發表于 06-21 12:06 ?3785次閱讀

    linux的scp命令怎么用_linux的grep命令用法

    在linux中,scp命令用于Linux之間復制文件和目錄,即在一臺Linux服務器中將本地的文件上傳到一臺遠端服務器,或將遠端服務器的文件下載到本地。scp是linux系統下基于ssh登陸進行安全的遠程文件拷貝命令。
    發表于 09-04 15:36 ?4568次閱讀
    linux的scp<b class='flag-5'>命令</b>怎么用_linux的<b class='flag-5'>grep</b><b class='flag-5'>命令</b>用法

    如何使用grep命令的多種搜索模式及搜索多個字符串

    今天向大家介紹一個非常有用的技巧,那就是使用 grep 命令查找多個字符串。簡單介紹一下,grep 命令可以理解為是一個功能強大的命令行工具
    的頭像 發表于 09-07 11:24 ?2749次閱讀

    grep命令常用的選項詳解

    說明:在Rocky8系統中,grep默認幫我們把匹配到的字符串標注了紅色,這點還是挺貼心的。其實大家可以用which命令看一下grep,你會發現grep其實是
    的頭像 發表于 11-30 11:43 ?5337次閱讀

    Linux grep命令詳解

    Linux grep命令是一種非常常用的文本搜索工具,它可以在給定的文件中搜索匹配的字符串,并輸出匹配的行。grep是全稱“global search regular expression print”,可以識別正則表達式,并使
    的頭像 發表于 12-25 09:39 ?783次閱讀
    主站蜘蛛池模板: 四虎国产永久在线精品免费观看 | 嫩草影院网站入口 | 国产成视频| 黄色网址 在线播放 | 午夜在线 | 天天操天天舔天天射 | 亚洲视频一区网站 | 韩国三级中文 | 欧美天天性 | 日韩一级片视频 | 色多多18免费观看 | 香蕉视频啪啪 | 特别黄的免费视频大片 | 6一10周岁毛片免费 717影院理论午夜伦不卡久久 | 成 人 免费观看网站 | 又长又大又粗又硬3p免费视 | 欧美一级免费片 | 天堂资源8中文最新版在线 天堂资源地址在线 | 日本色图视频 | 激情五月亚洲 | 天天澡天天摸天天添视频 | 国产免费好大好硬视频 | 免费一级牲交毛片 | 五月丁香六月综合缴清无码 | 看视频免费 | 美女全黄网站免费观看 | 龙口护士门91午夜国产在线 | 亚洲a在线播放 | 高清不卡免费一区二区三区 | 午夜视频网站 | 情久久| 海外毛片 | 色吊丝中文字幕 | 成人啪啪免费视频 | 日本特黄特色 | 黄色三级网站 | 成人黄色激情网 | av2014天堂网 | www.色婷婷| 欧美一卡2卡三卡4卡5卡免费观看 | 日日干视频 |