在Linux中使用正規表示式

2021-08-01 17:23:08 字數 2423 閱讀 8583

一.why

為什麼要在使用linux的時候使用正規表示式,因為linux中經常有檢索目錄或者檢索檔案內容的操作,而正規表示式在字串匹配和替換方面有著強大的功能,能夠提高我們的工作效率。舉兩個簡單的例子。

(1)特定檔案的檢索

筆者今天剛好想要看看在cuda的lib目錄下有沒有libcudnn檔案,但是該目錄下的檔案很多,直接看很難看出來,所以我們可以利用正規表示式來進行匹配,找出符合條件的檔案。命令如下:

(2)文字內容的檢索

筆者想要檢視caffe的makefile.config檔案中和cuda有關的配置,同時那些已經被注釋掉的行不希望被列印出來。命令如下:

這樣注釋的內容中即使有cuda也不會列印出來。

而除了用在命令中,正規表示式在shell指令碼中也發揮著重要的作用

二.what

linux的正則表達是怎麼樣的?

其實大部分的語法和《必知必會》講的差不多,在這裡以**的形式整理出來,方便檢視。

參考鳥哥的書,這裡分為基礎正規表示式和擴充套件正規表示式

2.1基礎正規表示式:

(1)基礎正規表示式字元

(2)特殊符號

2.2擴充套件正規表示式

擴充套件的正規表示式能夠實現更多的組合功能,從而減少檢索的次數

(1)擴充套件正規表示式字元

三 、how

複習了正規表示式的之後,我們需要知道該如何在linux中使用正規表示式。下面同樣是分為基礎和擴充套件兩個部分來講

3.1 基礎正規表示式在linux中的使用

可以使用正規表示式的常見命令有grep和 sed。grep和sed的區別在於,grep是以行為單位,進行字串的對比,sed則可以進行刪除、替換等更多的功能。

(1)grep

grep使用正規表示式的格式非常簡單

格式:grep [-n] [-a] [-b] [--color==auto] '搜尋的字串' filename

-n 表示 顯示列印出來的資料的行號

-a 後加數字,是after的意思,列印該行和後面的n行

-b 後加數字,是befer的意思,列印該行和前面的n行

『搜尋字串』即是正規表示式。

此外,grep 加上-v可以用於取反,即列印出不符合檢索條件的行的資料。

(2)sed [-nefri] [動作]

n :使用安靜(silent)模式。在一般 sed 癿用法中,所有來自 stdin 的資料一般都會被列出到螢幕上。但如果加上 -n 引數後,則只有經過 sed 特殊處理癿那一行(或者動作)才會被列出來。

-f :直接將 sed 的動作寫在乙個檔案內,

-f filename 則可以執行 filename 內的sed 動作;

-r :sed 的動作支援的是延伸行正規表示法的語法。(預設是基礎型正規表達法)

-i :直接修改讀的檔案內容,而不是由螢幕輸出。

動作說明: [n1[,n2]]function

n1, n2 不見得會存在,一般代表選擇進行動作癿行數,舉例來說,如果我的動作是需要在 10 到 20 行之間進行的,則 10,20[動作行為] function下有以下的引數可以選擇

a :新增, a 的後面可以接字串,而這些字串會在新的一行出現(目前的下一行)

c:取代, c 的後面可以接字串,這些字串可以取代 n1,n2 之間的行

d :刪除,因為是刪除,所以 d 後面通常不接任何東西;

i :插入, i的後面可以接字串,而這些字串會在新的一行出現(目前的上一行);

p :列印,亦即將某個選擇的資料印出。通常 p 會不引數 sed -n 一起運作

s :替代,可以直接執行替代的工作!通常這個 s的動作作可以搭配正則表示法!例如 1,20s/old/new/g 就是啦!

sed的寫法看起來複雜一點,需要結合一些例項去理解和使用。

3.2擴充套件正規表示式

需要實用egrep命令才能使用擴充套件的正規表示式,命令和用法和grep類似。

參考文獻

《鳥哥的linux私飯菜》

《正規表示式必知必會》

在UltraEdit中使用正規表示式

在ultraedit中使用正規表示式 刪除空行 替換 t p 為 空串 刪除行尾空格 替換 t 為 空串 刪除行首空格 替換 t 為 空串 每行設定為固定的4個空格開頭 替換 t t p 為 1 每段設定為固定的4個空格開頭 替換 t 為 如果一行是以空格開始的,則視之為一段的開始行 將一段合併為一...

在DELPHI中使用正規表示式

在網上發現,有多種方法可在delphi中使用正規表示式。竊以為直接使用微軟的regexp物件會比較簡單,無需額外工作。使用微軟regexp方法 2.註冊vbscript.dll regsvr32 命令,若安裝過vb或ie5以上會預設安裝該dll 3.在delphi中引入 microsoft vbsc...

在UltraEdit中使用正規表示式

刪除空行 替換 t p 為 空串 刪除行尾空格 替換 t 為 空串 刪除行首空格 替換 t 為 空串 每行設定為固定的4個空格開頭 替換 t t p 為 1 每段設定為固定的4個空格開頭 替換 t 為 如果一行是以空格開始的,則視之為一段的開始行 將一段合併為一行 替換 t p t p 為 1 注意...