Linux正規表示式技術指南

2021-06-16 23:18:04 字數 2290 閱讀 8222

** techtarget中國

shell

工具linux

正規表示式

摘要:作為乙個linux管理員,您需要對文字檔案進行處理。您可以使用不同的工具如grep、awk以及sed去查詢包含特定文字串的檔案。這裡,我將介紹一種使用正規表示式,以靈活的方式,去搜尋檔案中的文字的方法。

作為乙個linux管理員,您需要對文字檔案進行處理。您可以使用不同的工具如grep、awk以及sed去查詢包含特定文字串的檔案。這裡,我將介紹一種使用正規表示式,以靈活的方式,去搜尋檔案中的文字的方法。

讓我們考慮乙個正規表示式發揮作用的例子。比如,當你嘗試使用命令grep –r host /時,其返回的結果會很龐大。因為每乙個包含host這個文字串的字(像ghostscript這樣的字)都會匹配。採用正規表示式,你可以更好地定製你要查詢什麼。例如,你可以使用正規表示式'^host',告訴grep僅僅查詢以host開始的行。

正規表示式並不是在所有命令中都可用,您使用的命令必須已經事先編好程式,以便能夠使用正規表示式。這些命令中最普遍使用的命令是grep、tr以及vi。其它的工具,像sed和awk,也可以使用正規表示式。

使用正規表示式的乙個例子為:

grep 'lin.x' *

正規表示式'lin.x'中的點有特殊的含義。它會匹配處於該位置的任意字元。為了防止解釋性的問題,我建議您總是將正規表示式置於單引號間,這樣就可以防止shell對正規表示式進行解釋。

使用正規表示式

您可以使用正規表示式做很多事情。在以下的列表中,您可以找到一些最普通、最常用的正規表示式的例子。

* ^:表示文字串必須在一行的開頭。所以,當查詢行的開頭只為「hosts」的行,可以使用命令:grep -ls '^hosts'

* $:代表了一行的結尾。所以,當查詢行的結尾只為「hosts」的行,可以使用命令:grep -ls 'hosts$'

*   你可以在乙個正規表示式中結合^和$,去查詢僅僅包含"yes"的行,使用的命令為grep -ls '^yes$'

* .: 乙個可以指代除了換行符以外任意字元的萬用字元。為了查詢包含tex、tux、tox或者tix的行,可以使用:grep -ls 't.x'

* [ ]:表示在乙個正規表示式中,方括號之間的字元是可選的。為了查詢名字為pinda或者linda的使用者,可以使用命令:grep -ls '[pl]inda'

* [^ ]:忽略掉方括號中^之後的所有字元。為了查詢包含文字linda的行,並忽略掉其中僅包含linda或者pinda的行,命令為:grep -ls '[^pl]inda'

* -:代表一類或者乙個範圍內的字元。在像tr這樣的命令中,這是非常有用的。以下的命令可以將所有的小寫字母轉為大寫字母:tr a-z a-z < mytext。同樣地,你可以使用正規表示式grep -ls '^0-9'去查詢其中有一些行是以數字開頭的檔案。

* \< 和 \>:查詢乙個字的開頭或者結尾的模式。查詢行的開頭的字以"san"為起始的命令為: grep \。這些正規表示式有兩個缺點—他們並不查詢以指定的正規表示式開頭的行,並且他們並不被所有的工具所支援。但是,vi和grep是支援這種用法的。

* \:確保在正規表示式中有特殊含義的字元不被解釋。查詢以任何字元開始,後面跟著文字"host"的文字串的命令為grep -ls '.host'。而如果你需要查詢以點為第乙個字元,緊接著為"host"的文字串,可以用命令:grep -ls '\.host'

這些正規表示式可以幫助您找到包含特定文字串的字。您也可以使用正規表示式去指定,在乙個字中,該字串出現的頻率。比如,您可以使用正規表示式去搜尋剛好包含使用者名稱"linda"三次的檔案。為了達到這一目的,您需要使用正規表示式的重複運算元,並保證整個正規表示式位於引號中。沒有引號的話,您可能會導致shell去解釋您的重複運算元。

最重要的重複運算元的列表如下:

* *:表示前述的正規表示式可能出現一次、多次或者根本不出現。注意:不要和shell中的*混淆—在shell中,*表示任意字元,而在正規表示式中,*表示之前的正規表示式可能存在。

* ?:表示在該位置可能是乙個字元(但並不是必須是)。例如,同時查詢color和colour的命令為:grep -ls 'colo.r'

* +:表示之前的字元或者正規表示式至少要出現一次

* \:表示之前的字元或者正規表示式至少要出現n次。當你查詢乙個介於100到999之間的數字時,這是很有用的:grep -ls '0-9\'  

我們已經向您概述了正規表示式的使用方法。這可以讓您在做乙個管理員時,更加地有效率。正規表示式可以提供更多的功能,包括一些相當複雜的操作。但在之前,請首先掌握我們已經介紹的這些技能。正規表示式可以非常複雜,以至於你會很容易迷失其中。

linux正規表示式指南

1 首先要指出的是 shell中有萬用字元,也有正規表示式。注意區分。反正grep用的正規表示式。作為乙個linux管理員,您需要對文字檔案進行處理。您可以使用不同的工具如grep awk 以及sed 去查詢包含特定文字串的檔案。這裡,我將介紹一種使用正規表示式,以靈活的方式,去搜尋檔案中的文字的方...

Linux正規表示式 編寫正規表示式

為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...

正規表示式 Linux

主要內容 1 正規表示式2 基礎3 擴充套件4 通配5 grep命令 正規表示式基礎 1 元字元 metacharacters 是用來闡釋字元表示式意義的字元,簡言之,元字元就是描述字元的字元,它用於對字元表示式的內容 轉換及各種操作資訊進行描述。正規表示式是由一串字元和元字元構成的字串,簡稱re ...