使用awk作為文字處理工具,正規表示式是少不了的。 要掌握這個工具的正規表示式使用。其實,我們不必單獨去學習它的正規表示式。正規表示式就像一門程式語言,有自己語法規則已經表示意思。 對於不同工具,其實大部分表示意思相同的。在linux眾多文字處理工具(awk,sed,grep,perl)裡面用到正規表示式。其實就只有3種型別:linux shell 正規表示式 。只要是某些工具是屬於某種型別的正規表示式。那麼它的語法規則基本一樣。awk的正規表示式是屬於:擴充套件的正規表示式(extended regular expression 又叫 extended regex 簡稱 eres)。
一、awk extended regular expression (eres)基礎表示式符號:
字元功能
+指定如果乙個或多個字元或擴充套件正規表示式的具體值(在+(加號)前)在這個字串中,則字串匹配。命令列:
awk '/smith+ern/' testfile
將包含字元 smit,後跟乙個或多個 h 字元,並以字元ern 結束的字串的任何記錄列印至標準輸出。此示例中的輸出是:
smithern, harry smithhern, anne
?指定如果零個或乙個字元或擴充套件正規表示式的具體值(在 ?(問號)之前)在字串中,則字串匹配。命令列:
awk '/smith?/' testfile
將包含字元 smit,後跟零個或乙個 h 字元的例項的所有記錄列印至標準輸出。此示例中的輸出是:
smith, alan smithern, harry smithhern, anne smitters, alexis
|指定如果以 |(垂直線)隔開的字串的任何乙個在字串中,則字串匹配。命令列:
awk '/allen | alan /' testfile
將包含字串 allen 或 alan 的所有記錄列印至標準輸出。此示例中的輸出是:
smiley, allen smith, alan
( )在正規表示式中將字串組合在一起。命令列:
awk '/a(ll)?(nn)?e/' testfile
將具有字串 ae 或 alle 或 anne 或 allnne 的所有記錄列印至標準輸出。此示例中的輸出是:
smiley, allen smithhern, anne
指定如果正好有 m 個模式的具體值位於字串中,則字串匹配。命令列:
awk '/l/' testfile
列印至標準輸出
smiley, allen
指定如果至少 m 個模式的具體值在字串中,則字串匹配。命令列:
awk '/t/' testfile
列印至標準輸出:
smitters, alexis
指定如果 m 和 n 之間(包含的 m 和 n)個模式的具體值在字串中(其中m<= n),則字串匹配。命令列:
awk '/er/' testfile
列印至標準輸出:
smithern, harry smithern, anne smitters, alexis
[string]
指定正規表示式與方括號內 string 變數指定的任何字元匹配。命令列:
awk '/sm[a-h]/' testfile
將具有 sm 後跟以字母順序從 a 到 h 排列的任何字元的所有記錄列印至標準輸出。此示例的輸出是:
smawley, andy
[^string]
在 [ ](方括號)和在指定字串開頭的 ^ (插入記號) 指明正規表示式與方括號內的任何字元不匹配。這樣,命令列:
awk '/sm[^a-h]/' testfile
列印至標準輸出:
smiley, allen smith, alan smithern, harry smithhern, anne smitters, alexis
~,!~
表示指定變數與正規表示式匹配(代字型大小)或不匹配(代字型大小、感嘆號)的條件語句。命令列:
awk '$1 ~ /n/' testfile
將第乙個字段包含字元 n 的所有記錄列印至標準輸出。此示例中的輸出是:
smithern, harry smithhern, anne
^指定欄位或記錄的開頭。命令列:
awk '$2 ~ /^h/' testfile
將把字元 h 作為第二個欄位的第乙個字元的所有記錄列印至標準輸出。此示例中的輸出是:
smithern, harry
$指定欄位或記錄的末尾。命令列:
awk '$2 ~ /y$/' testfile
將把字元 y 作為第二個欄位的最後乙個字元的所有記錄列印至標準輸出。此示例中的輸出是:
smawley, andy smithern, harry
. (句號)
表示除了在空白末尾的終端換行字元以外的任何乙個字元。命令列:
awk '/a..e/' testfile
將具有以兩個字元隔開的字元 a 和 e 的所有記錄列印至標準輸出。此示例中的輸出是:
smawley, andy smiley, allen smithhern, anne
*(星號)
awk '/a.*e/' testfile
smawley, andy smiley, allen smithhern, anne smitters, alexis
\ (反斜槓)
轉義字元。當位於在擴充套件正規表示式中具有特殊含義的任何字元之前時,轉義字元除去該字元的任何特殊含義。例如,命令列:
/a\/\//
將與模式 a // 匹配,因為反斜槓否定斜槓作為正規表示式定界符的通常含義。要將反斜槓本身指定為字元,則使用雙反斜槓。有關反斜槓及其使用的更多資訊,請參閱以下關於轉義序列的內容。
二、awk 常見呼叫正規表示式方法
awk 『/reg/』/reg/為正規表示式,可以將$0中,滿足條件記錄 送入到:action進行處理.
[chengmo@centos5 ~]$ awk 'begin}'ok
gsub( ere, repl, [ in ] )sub( ere, repl, [ in ] )
match( string, ere )
split( string, a, [ere] )
awk模式匹配
在這篇文章中,我們將看到許多小的,甚至沒有什麼意義的例子,但他們能夠驗證awk程式指令碼的主要 特點。當awk讀入一行時,它試圖匹配指令碼中的每個模式匹配規則。只有與乙個特定的模式相匹配的輸入行才能成為操作物件。如果沒有指定操作,與模式相匹配的輸入行將被列印出來 執行列印語句是乙個預設操作 參閱下面...
awk的模式匹配
awk的模式匹配 awk begin pattern end 當我們需要在文字中取出一段東西的時候,可以使用awk。awk和sed一樣是個比較妖的東西,有正則,但是正則語法又和linux下的不一樣。1.awk 正則 file 2.awk 正則1 正則2 file 在1中,被正規表示式匹配到的行,將會...
awk匹配整行
如果沒有指定操作,則單個正規表示式將對整行進行模式匹配,並列印出所匹配的行。可以使用元字元 來表示需要進行行首匹配的正規表示式。範例 cat employees tom jones 44245 12 66543354 mary adams 534611 4 6328765 sally chang 1...