Linux grep命令

来源:http://www.cnblogs.com/chenmh/archive/2016/04/05/5342456.html
-Advertisement-
Play Games

介紹 grep是一個功能強大的文本搜索命令,可以用它來搜索某個文件中是否包含指定的搜索內容,它可以利用正則表達式來做複雜的篩選操作,它還可以為其它命令傳輸給管道的篩選,比如我們常用到的分析單個進程的操作就是會利用它“ps -ef|grep command”。 語法 grep [OPTION]... ...


介紹

grep是一個功能強大的文本搜索命令,可以用它來搜索某個文件中是否包含指定的搜索內容,它可以利用正則表達式來做複雜的篩選操作,它還可以為其它命令傳輸給管道的篩選,比如我們常用到的分析單個進程的操作就是會利用它“ps -ef|grep command”。

 

語法

grep [OPTION]... PATTERN [FILE]...

預設不加參數是顯示匹配上的行記錄,可以使用--help來查看它所支持的所以參數,本文只會列舉比較常用的一些命令。

-a:輸出的內容不要忽略二進位數據
-b<n>:輸出匹配上的n個位元組的行。
-c :只顯示符合條件的行的數量,不顯示內容
-d:當你要查找的是目錄而不是文件的時候需要制定該參數,否則會報錯
-H:在輸出的內容行前加上該行所屬的文件名。
-h:不在輸出的行前加上該行所屬的文件名,這是預設的選項。
-i:忽略大小寫
-L:列出不符合查找內容的文件的文件名
-l:列出符合查找內容的文件的文件名
-m<n>:只輸出匹配上的指定n行。
-o:只顯示查找的內容,不顯示該行其它的內容。
-q:什麼都不輸出
-r:如果需要遍歷整個目錄的所有文件,可以使用該參數
-v:顯示沒有匹配上的行信息,和預設值相反
-V:顯示版本信息

正則表達式

grep配合正則進行篩選的時候對於{ } ()都需要用到轉義字元。

命令

說明

^

在字元的開啟處進行匹配

$

在字元的末尾處進行匹配

.

匹配任何字元(包括回車和新行)

[….]

匹配括弧內的任意單個字元

[m-n]

匹配m到n之間的任意單個字元,例如[0-9],[a-z],[A-Z]

[^..]

不能匹配括弧內的任意單個字元

a*

匹配0個或多個a,包括空

a\{m\}

匹配m個a

a\{m,\}

匹配m個或者更多個a

a\{m,n\}

匹配m到n個a

\(….\)

將模式元素組成單一元素,例如(do)*意思是匹配0個多或多個do

 

grep常見用法

創建測試數據

grep --help >/tmp/grep.text

1.為其它命令做篩選操作

查詢包含sbin的進程

[root@localhost ~]# ps -ef |grep "sbin"
root 1 0 0 11:04 ? 00:00:01 /sbin/init
root 543 1 0 11:04 ? 00:00:00 /sbin/udevd -d
root 1559 1 0 11:04 ? 00:00:00 /usr/sbin/vmware-vmblock-fuse -o subtype=vmware-vmblock,default_permissions,allow_other /var/run/vmblock-fuse
root 1580 1 0 11:04 ? 00:00:18 /usr/sbin/vmtoolsd
root 1992 1 0 11:04 ? 00:00:00 /sbin/rsyslogd -i /var/run/syslogd.pid -c 5
root 2078 1 0 11:04 ? 00:00:00 /usr/sbin/modem-manager
root 2122 1 0 11:04 ? 00:00:00 /usr/sbin/wpa_supplicant -c /etc/wpa_supplicant/wpa_supplicant.conf -B -u -f /var/log/wpa_supplicant.log -P /var/run/wpa_supplicant.pid
root 2133 1 0 11:05 ? 00:00:00 /usr/sbin/acpid
root 2219 1 0 11:05 ? 00:00:00 /usr/sbin/bluetoothd --udev
root 2298 1 0 11:05 ? 00:00:00 /usr/sbin/sshd
root 3172 1 0 11:05 ? 00:00:00 /usr/sbin/abrtd
root 3199 1 0 11:05 ? 00:00:00 /usr/sbin/atd
root 3215 1 0 11:05 ? 00:00:00 /usr/sbin/gdm-binary -nodaemon
root 3220 1 0 11:05 tty2 00:00:00 /sbin/mingetty /dev/tty2
root 3222 1 0 11:05 tty3 00:00:00 /sbin/mingetty /dev/tty3
root 3224 1 0 11:05 tty4 00:00:00 /sbin/mingetty /dev/tty4
root 3227 543 0 11:05 ? 00:00:00 /sbin/udevd -d
root 3228 1 0 11:05 tty5 00:00:00 /sbin/mingetty /dev/tty5
root 3230 1 0 11:05 tty6 00:00:00 /sbin/mingetty /dev/tty6
root 3231 543 0 11:05 ? 00:00:00 /sbin/udevd -d
root 3261 1 0 11:05 ? 00:00:00 /usr/sbin/console-kit-daemon --no-daemon
root 5923 2071 0 14:12 ? 00:00:00 /sbin/dhclient -d -4 -sf /usr/libexec/nm-dhcp-client.action -pf /var/run/dhclient-eth0.pid -lf /var/lib/dhclient/dhclient-3a7ff4d9-5a09-46b1-bb20-0298a18e6b78-eth0.lease -cf /var/run/nm-dhclient-eth0.conf eth0
root 6294 6044 0 15:50 pts/1 00:00:00 grep sbin

2. 查詢行數

查詢包含“-d”的行數
[root@localhost ~]# grep -c "\-d" /tmp/grep.txt 
6

3.$

查詢以lines結尾的行

[root@localhost ~]# grep  "lines$" /tmp/grep.txt 
  -x, --line-regexp         force PATTERN to match only whole lines
  -v, --invert-match        select non-matching lines
  -b, --byte-offset         print the byte offset with output lines
  -n, --line-number         print line number with output lines

4.{m,}

查詢包含2個或者更多個S的行
[root@localhost ~]# grep  "\(s\)\{2,\}" /tmp/grep.txt 
PATTERN is, by default, a basic regular expression (BRE).
  -E, --extended-regexp     PATTERN is an extended regular expression (ERE)
  -G, --basic-regexp        PATTERN is a basic regular expression (BRE)
  -P, --perl-regexp         PATTERN is a Perl regular expression
  -s, --no-messages         suppress error messages
  -h, --no-filename         suppress the file name prefix on output
  -q, --quiet, --silent     suppress all normal output
      --binary-files=TYPE   assume that binary files are TYPE;
-r is given, - otherwise.  If fewer than two FILEs are given, assume -h.

總結

註意使用轉義字元,如果使用正則要查找的不是單個字元而是多個字元需要使用()把多個字元括起來,grep還有很多的使用技巧這裡就不一一列出來。

 

 

備註:

    作者:pursuer.chen

    博客:http://www.cnblogs.com/chenmh

本站點所有隨筆都是原創,歡迎大家轉載;但轉載時必須註明文章來源,且在文章開頭明顯處給明鏈接。

《歡迎交流討論》

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一,代碼。 二,輸出。 ...
  • 最近研究了一下iOS的自動化編譯,目的是為了簡化測試和開發的同學溝通協調的次數,實現測試同學可以隨時從網頁操作編譯SVN最新源碼並打包ipa進行測試。 具體思路是通過從配置文件讀取需要編譯的項目配置列表展示在網頁上,測試同學選擇需要編譯的項目,確定後將選擇項目的相關參數傳入shell腳本運行,編譯完 ...
  • 前些天把四大組件之一的Service扯了一遍,今天就要開始談談它的弟兄BroadcastReceiver了。寫到這裡我挺糾結的,因為廣播接收者確實比較簡單,但是各位就不要以為簡單的就不內涵,也許我們慢慢探討一下還能有另外一片天地。 慣例還是先會介紹一下基礎的知識,後面會說說關於BroadcastRe ...
  • 樣式: layout: popup_appinfo.xml anim: popup_enter.xml popup_exit.xml code: Activity.java ...... ...... 1 //彈窗消失 2 mPopupWindow.dismiss(); ...... ...
  • 雖然現在各種圖形化管理工具方便了MySQL的管理,但是偶爾還是需要手動輸入指令來使用比較方便,以下是摘抄的一些命令,供自己備忘使用。 1、顯示資料庫列表。 show databases; 2、顯示庫中的數據表: use mysql;show tables; 3、顯示數據表的結構: describe ...
  • 1、自頂向下查找 2、自底向上查找 ...
  • 我相信經常有同學想刪除某一個表時,遇到這樣或那樣的約束無法刪除一頭霧水,這時您請不要著急,先看看以下提供的刪除所有約束、表、視圖等SQL腳本,或在測試環境試用。但是您也可以僅刪除某一個對象(表)的所有約束或全部約束,您只需要把游標里用到的SELECT查詢語句單獨拿出來執行一下,自己看看就明白了,刪除 ...
  • 在保密你的伺服器和數據,防備當前複雜的攻擊,SQL Server有你需要的一切。但在你能有效使用這些安全功能前,你需要理解你面對的威脅和一些基本的安全概念。這篇文章提供了基礎,因此你可以對SQL Server里的安全功能充分利用,不用在面對特定威脅,不能保護你數據的功能上浪費時間。 從讓人眼花繚亂的 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...