grep命令的使用

来源:http://www.cnblogs.com/roucheng/archive/2016/05/29/grep.html
-Advertisement-
Play Games

grep是UNIX和LINUX中使用最廣泛的命令之一。grep允許對文本文件進行模式查找。如果找到匹配模式, grep列印包含模式的所有行。grep支持基本正則表達式,也支持其擴展集。grep有三種變形,即: grep:標準grep命令,這裡主要討論此格式; Egrep:等同於grep -E,擴展g ...


 grep是UNIX和LINUX中使用最廣泛的命令之一。grep允許對文本文件進行模式查找。如果找到匹配模式, grep列印包含模式的所有行。grep支持基本正則表達式,也支持其擴展集。grep有三種變形,即:

grep:標準grep命令,這裡主要討論此格式;

Egrep:等同於grep -E,擴展grep,支持基本及擴展的正則表達式;

Fgrep:等同於grep -F,不支持正則表達式,允許查找字元串而不是一個模式。

   grep有很多選項可供使用,有問題找“男人”,會有詳細說明,我這裡只是說說我所使用到的,最近需要寫一些shell腳本,在這過程中有用到grep命令。下麵就是幾種使用場景:

1.  查找A目錄下所有文件中特定內容是否在B目錄下對應文件中存在

   解決辦法:藉助grep把A目錄下每個文件里特定內容輸出到另外一個文件中,B目錄同樣處理,使用命令:

   grep  "define" fileA > listA

   grep  "define" fileA > listB

   因為define後面的部分內容不一樣,我們的目的是找出類似define("TEST_A","testa");格式而文件沒有TEST_A的部分,當然裡面有很多不同的define語句。如果使用diff命令來對比的話難以應付,所以可以使用windows下的BeyondCompare工具進行人工比對,不同的內容會標紅一目瞭然,那麼至少在逗號前面相同部分是不會標紅的,關於這個工具還有更多的用處,感興趣的可以搜索一下。

2.  要對某目錄下除了個別文件外的所有內容打包壓縮

   解決辦法:使用grep -v註意是小寫的v,意為不包含匹配的行,而大寫的V意為版本。

   完整命令可以寫為:

   ls PATH | grep -v '.log' | grep -v '.tar.gz' > tar.list

   目的把需要打包的文件及目錄名(排除.log及.tar.gz尾碼名文件)寫入tar.list

   第二步即進行打包操作:

   cat tar.list | xargs tar -zcvf target.tar.gz

   把cat出的結果作為參數傳入管道後面執行打包命令,這也是xargs的用法.

http://hovertree.com/menu/linux/

3.  找出目錄下最新的滿足"target_數字"格式的目錄

   解決辦法: 使用grep -e當然使用-E也可以。

   完整命令為:

   ls PATH --sort=time | grep -e  resource_\d* | head -1

   使用ls的選項--sort=time時間排序排列,而head即是獲取命中的第一部分。

推薦:http://www.cnblogs.com/roucheng/p/3470287.html


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

-Advertisement-
Play Games
更多相關文章
  • 教你如何在 Android 使用多線程下載文件 =============================================== 前言 在 Android 日常開發中,我們會經常遇到下載文件需求,這裡我們也可以用系統自帶的 api 來解決這個問題,當然我們也可以自己來寫。在這裡我將教大 ...
  • 我們在使用手機的時候,經常會遇到一個問題:先是卡死,然後跳出該程式無響應,是否關閉的提示(當然有可能是我們手機性能太差=。=)這是因為線程的阻塞引起的,在這裡我講述一下UI線程,一般處理程式會在UI線程中執行耗時操作,這回導致UI線程阻塞,當UI線程阻塞,屏幕會出現卡死,用戶體驗會變得非常差,當線程 ...
  • OC 觀察者模式(通知中心,KVO) 什麼是觀察者模式??? A對B的變化感興趣,就註冊為B的觀察者,當B發生變化時通知A,告知B發生了變化。這就是觀察者模式。 觀察者模式定義了一種一對多的依賴關係,讓多個觀察者對象同時監聽某一個主題對象。這個主題對象在狀態上發生變化時,會通知所有觀察者對象,使它們 ...
  • 在資料庫遠程連接上,很多時候我們總是連接不上,這時候很有可能1433埠未開放導致的。 解決方案: (1)在Windows防火牆中開放1433的入站(在Windows中開放1433埠的步驟:1.打開控制面板,2.點擊系統和安全,3.點擊防火牆,4.點擊高級設置,可以看到入站規則和出站規則,5.右鍵 ...
  • 現在很多用戶被資料庫的慢的問題所困擾,又苦於花錢請一個專業的DBA成本太高。軟體維護人員對資料庫的瞭解又不是那麼深入,所以導致問題遲遲不能解決,或只能暫時解決不能得到根治。開發人員解決數據問題基本又是搜遍百度各種方法嘗試個遍,可能錯過診斷問題的最佳時機又可能嘗試一堆方法最後無奈放棄。 怎麼樣讓瑣事纏 ...
  • 一般,我們看到術語“索引”和“鍵”交換使用,但實際上這兩個是不同的。索引是存儲在資料庫中的一個物理結構,鍵純粹是一個邏輯概念。鍵代表創建來實施業務規則的完整性約束。索引和鍵的混淆通常是由於資料庫使用索引來實施完整性約束。 接下來我們看看資料庫中的主鍵約束、唯一鍵約束和唯一索引的區別。 SQL> se ...
  • MongoDB是一個開源的文檔資料庫,支持高性能、高可用性、自動縮放。 在MongoDB中,一條記錄就是一個文檔,是由欄位和值對構成一個數據結構,類似於JSON對象。欄位的值可以包括其他文檔、數組和文檔的數組。 數據結構如下所示: ...
  • 腳本最好都放在/usr/local/sbin中 腳本的執行 sh -x 腳本.sh -x可以查看執行過程 1在腳本中使用變數 使用變數的時候,需要使用$符號: #!/bin/bash ##把命令賦值為變數,需要使用反引號 d=`date +"%H:%M:%S"` echo "The script b ...
一周排行
    -Advertisement-
    Play Games
  • 概述:本文代碼示例演示瞭如何在WPF中使用LiveCharts庫創建動態條形圖。通過創建數據模型、ViewModel和在XAML中使用`CartesianChart`控制項,你可以輕鬆實現圖表的數據綁定和動態更新。我將通過清晰的步驟指南包括詳細的中文註釋,幫助你快速理解並應用這一功能。 先上效果: 在 ...
  • openGauss(GaussDB ) openGauss是一款全面友好開放,攜手伙伴共同打造的企業級開源關係型資料庫。openGauss採用木蘭寬鬆許可證v2發行,提供面向多核架構的極致性能、全鏈路的業務、數據安全、基於AI的調優和高效運維的能力。openGauss深度融合華為在資料庫領域多年的研 ...
  • openGauss(GaussDB ) openGauss是一款全面友好開放,攜手伙伴共同打造的企業級開源關係型資料庫。openGauss採用木蘭寬鬆許可證v2發行,提供面向多核架構的極致性能、全鏈路的業務、數據安全、基於AI的調優和高效運維的能力。openGauss深度融合華為在資料庫領域多年的研 ...
  • 概述:本示例演示了在WPF應用程式中實現多語言支持的詳細步驟。通過資源字典和數據綁定,以及使用語言管理器類,應用程式能夠在運行時動態切換語言。這種方法使得多語言支持更加靈活,便於維護,同時提供清晰的代碼結構。 在WPF中實現多語言的一種常見方法是使用資源字典和數據綁定。以下是一個詳細的步驟和示例源代 ...
  • 描述(做一個簡單的記錄): 事件(event)的本質是一個委托;(聲明一個事件: public event TestDelegate eventTest;) 委托(delegate)可以理解為一個符合某種簽名的方法類型;比如:TestDelegate委托的返回數據類型為string,參數為 int和 ...
  • 1、AOT適合場景 Aot適合工具類型的項目使用,優點禁止反編 ,第一次啟動快,業務型項目或者反射多的項目不適合用AOT AOT更新記錄: 實實在在經過實踐的AOT ORM 5.1.4.117 +支持AOT 5.1.4.123 +支持CodeFirst和非同步方法 5.1.4.129-preview1 ...
  • 總說周知,UWP 是運行在沙盒裡面的,所有許可權都有嚴格限制,和沙盒外交互也需要特殊的通道,所以從根本杜絕了 UWP 毒瘤的存在。但是實際上 UWP 只是一個應用模型,本身是沒有什麼許可權管理的,許可權管理全靠 App Container 沙盒控制,如果我們脫離了這個沙盒,UWP 就會放飛自我了。那麼有沒... ...
  • 目錄條款17:讓介面容易被正確使用,不易被誤用(Make interfaces easy to use correctly and hard to use incorrectly)限制類型和值規定能做和不能做的事提供行為一致的介面條款19:設計class猶如設計type(Treat class de ...
  • title: 從零開始:Django項目的創建與配置指南 date: 2024/5/2 18:29:33 updated: 2024/5/2 18:29:33 categories: 後端開發 tags: Django WebDev Python ORM Security Deployment Op ...
  • 1、BOM對象 BOM:Broswer object model,即瀏覽器提供我們開發者在javascript用於操作瀏覽器的對象。 1.1、window對象 視窗方法 // BOM Browser object model 瀏覽器對象模型 // js中最大的一個對象.整個瀏覽器視窗出現的所有東西都 ...