Linux系統中grep指令是一種強大的文本搜尋工具,它能使用正規表示式搜尋文本,並把符合的行列印出來,其使用語法是「grep [options] pattern [files] 」。
本文操作環境:linux5.9.8系統、Dell G3電腦。
Linux grep指令
Linux grep指令用來尋找檔案裡符合條件的字串;也可以用來尋找內容包含指定的範本樣式的檔案。它能使用正規表示式搜索,用於在文件中搜尋指定的字串模式,列出包含匹配模式子符串的文件名,並輸出包含該字串的文本行。
grep的工作方式是這樣的:它在一個或多個檔案中搜尋字串模板。如果模板包括空格,則必須被引用,模板後的所有字串被視為檔案名稱。搜尋的結果送到標準輸出,不影響原文件內容。
基本語法:
grep [options] pattern [files]
[options]的主要參數:
-a 或--text : 不要忽略二進制的數據。
-A 或 --after-context= : 除了顯示符合範本樣式的那一列之外,並顯示該行之後的內容。
-b 或 --byte-offset : 在顯示符合樣式的那一行之前,標示出該行第一個字元的編號。
-B 或 --before-context= : 除了顯示符合樣式的那一行之外,並顯示該行之前的內容。
-c 或 --count : 計算符合樣式的列數。
-C 或--context=或- : 除了顯示符合樣式的那一行之外,並顯示該行之前後的內容。
-d 或--directories= : 當指定要尋找的是目錄而非檔案時,必須使用此參數,否則grep指令將回報資訊並停止動作。
-e 或 --regexp= : 指定字串做為尋找檔案內容的樣式。
-E 或 --extended-regexp : 將樣式為延伸的普通表示法來使用。
-f 或--file= : 指定規則文件,其內容含有一個或多個規則樣式,讓grep查找符合規則條件的文件內容,格式為每行一個規則樣式。
-F 或 --fixed-regexp : 將樣式視為固定字串的清單。
-G 或 --basic-regexp : 將樣式視為普通的表示法來使用。
-h 或 --no-filename : 在顯示符合樣式的那一行之前,不標示該行所屬的檔案名稱。
-H 或 --with-filename : 在顯示符合樣式的那一行之前,表示該行所屬的檔案名稱。
-i 或 --ignore-case : 忽略字元大小寫的差異。
-l 或 --file-with-matches : 列出檔案內容符合指定的樣式的檔案名稱。
-L 或 --files-without-match : 列出檔案內容不符合指定的樣式的檔案名稱。
-n 或 --line-number : 在顯示符合樣式的那一行之前,標示出該行的列數編號。
-o 或 --only-matching : 只顯示符合PATTERN 部分。
-q 或 --quiet或--silent : 不顯示任何資訊。
-r 或 --recursive : 此參數的效果和指定"-d recurse"參數相同。
-s 或 --no-messages : 不顯示錯誤訊息。
-v 或 --revert-match : 顯示所有不包含符合文字的行。
-V 或 --version : 顯示版本資訊。
-w 或 --word-regexp : 只顯示全字符合的欄位。
-x --line-regexp : 只顯示全列符合的列。
-y : 此參數的效果和指定"-i"參數相同。
-?:同時顯示匹配行上下的?行,如:grep -2 pattern filename同時顯示符合行的上下2行。
pattern正規表示式主要參數:
\:忽略正規表示式中特殊字元的原始意義。
^:符合正規表示式的開始行。
$:符合正規表示式的結束行。
\<:>
\>:到符合正規表示式的行結束。
[]:單一字符,如[A]即A符合要求。
[ - ]:範圍,如[A-Z],即A、B、C一直到Z都符合要求。
.:所有的單一字元。
*:有字符,長度可以為0。
程式碼範例:
範例1:在目前目錄中,找出前綴有「test」字樣的文件中包含「test」字串的文件,並列印出該字串的行,此時,可以使用以下命令:
grep test test*
輸出:
testfile1:This a Linux testfile! #列出testfile1 文件中包含test字符的行 testfile_2:This is a linux testfile! #列出testfile_2 文件中包含test字符的行 testfile_2:Linux test #列出testfile_2 文件中包含test字符的行
範例2:反向查找,透過"-v"參數可以列印出不符合條件行的內容。在尋找檔案名稱中包含test 的檔案中不包含test 的行
grep -v test *test*
輸出:
testfile1:helLinux! testfile1:Linis a free Unix-type operating system. testfile1:Lin testfile_1:HELLO LINUX! testfile_1:LINUX IS A FREE UNIX-TYPE OPTERATING SYSTEM. testfile_1:THIS IS A LINUX TESTFILE! testfile_2:HELLO LINUX! testfile_2:Linux is a free unix-type opterating system.
相关linux视频教程推荐:《linux语言教程》
以上就是本篇文章的全部内容,希望能对大家的学习有所帮助。更多精彩内容大家可以关注php中文网相关教程栏目!!!
以上是linux中如何使用grep指令? (詳解)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

linux设备节点是应用程序和设备驱动程序沟通的一个桥梁;设备节点被创建在“/dev”,是连接内核与用户层的枢纽,相当于硬盘的inode一样的东西,记录了硬件设备的位置和信息。设备节点使用户可以与内核进行硬件的沟通,读写设备以及其他的操作。

区别:1、open是UNIX系统调用函数,而fopen是ANSIC标准中的C语言库函数;2、open的移植性没fopen好;3、fopen只能操纵普通正规文件,而open可以操作普通文件、网络套接字等;4、open无缓冲,fopen有缓冲。

端口映射又称端口转发,是指将外部主机的IP地址的端口映射到Intranet中的一台计算机,当用户访问外网IP的这个端口时,服务器自动将请求映射到对应局域网内部的机器上;可以通过使用动态或固定的公共网络IP路由ADSL宽带路由器来实现。

在linux中,eof是自定义终止符,是“END Of File”的缩写;因为是自定义的终止符,所以eof就不是固定的,可以随意的设置别名,linux中按“ctrl+d”就代表eof,eof一般会配合cat命令用于多行文本输出,指文件末尾。

在linux中,交叉编译是指在一个平台上生成另一个平台上的可执行代码,即编译源代码的平台和执行源代码编译后程序的平台是两个不同的平台。使用交叉编译的原因:1、目标系统没有能力在其上进行本地编译;2、有能力进行源代码编译的平台与目标平台不同。

在linux中,可以利用“rpm -qa pcre”命令判断pcre是否安装;rpm命令专门用于管理各项套件,使用该命令后,若结果中出现pcre的版本信息,则表示pcre已经安装,若没有出现版本信息,则表示没有安装pcre。

linux查询mac地址的方法:1、打开系统,在桌面中点击鼠标右键,选择“打开终端”;2、在终端中,执行“ifconfig”命令,查看输出结果,在输出信息第四行中紧跟“ether”单词后的字符串就是mac地址。

在linux中,rpc是远程过程调用的意思,是Reomote Procedure Call的缩写,特指一种隐藏了过程调用时实际通信细节的IPC方法;linux中通过RPC可以充分利用非共享内存的多处理器环境,提高系统资源的利用率。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

Dreamweaver Mac版
視覺化網頁開發工具

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

記事本++7.3.1
好用且免費的程式碼編輯器