1. 程式人生 > >awk 正則表示式、正則運算子詳細介紹

awk 正則表示式、正則運算子詳細介紹

前言:使用awk作為文字處理工具,正則表示式是少不了的。 要掌握這個工具的正則表示式使用。其實,我們不必單獨去學習它的正則表示式。正則表示式就像一門程式語言,有自己語法規則已經表示意思。 對於不同工具,其實大部分表示意思相同的。在linux眾多文字處理工具(awk,sed,grep,perl)裡面用到正則表示式。其實就只有3種類型。詳細可以參考:linux shell 正則表示式(BREs,EREs,PREs)差異比較 。只要是某些工具是屬於某種型別的正則表示式。那麼它的語法規則基本一樣。 通過那篇文章,我們知道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

將包含字串 allenalan 的所有記錄列印至標準輸出。此示例中的輸出是:

smiley, allen smith, alan

( ) 在正則表示式中將字串組合在一起。命令列:

awk '/a(ll)?(nn)?e/' testfile

將具有字串 aealleanneallnne 的所有記錄列印至標準輸出。此示例中的輸出是:

smiley, allen smithhern, anne

{m} 指定如果正好有 m 個模式的具體值位於字串中,則字串匹配。命令列:

awk '/l{2}/' testfile

列印至標準輸出

smiley, allen

{m,} 指定如果至少 m 個模式的具體值在字串中,則字串匹配。命令列:

awk '/t{2,}/' testfile

列印至標準輸出:

smitters, alexis

{m, n} 指定如果 mn 之間(包含的 m 和 n)個模式的具體值在字串中(其中m <= n),則字串匹配。命令列:

awk '/er{1, 2}/' testfile

列印至標準輸出:

smithern, harry smithern, anne smitters, alexis

[String] 指定正則表示式與方括號內 String 變數指定的任何字元匹配。命令列:

awk '/sm[a-h]/' testfile

將具有 sm 後跟以字母順序從 ah 排列的任何字元的所有記錄列印至標準輸出。此示例的輸出是:

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

將具有以零個或更多字元隔開的字元 a 和 e 的所有記錄列印至標準輸出。此示例中的輸出是:

smawley, andy smiley, allen smithhern, anne smitters, alexis

\ (反斜槓) 轉義字元。當位於在擴充套件正則表示式中具有特殊含義的任何字元之前時,轉義字元除去該字元的任何特殊含義。例如,命令列:

/a\/\//

將與模式 a // 匹配,因為反斜槓否定斜槓作為正則表示式定界符的通常含義。要將反斜槓本身指定為字元,則使用雙反斜槓。有關反斜槓及其使用的更多資訊,請參閱以下關於轉義序列的內容。

與PERs相比,主要是一些結合型別表示符沒有了:包括:”\d,\D,\s,\S,\t,\v,\n,\f,\r”其它功能基本一樣的。 我們常見的軟體:javascript,.net,java支援的正則表示式,基本上是:EPRs型別。

二、awk 常見呼叫正則表示式方法

  • awk語句中:

awk ‘/REG/{action}’

/REG/為正則表示式,可以將$0中,滿足條件記錄 送入到:action進行處理.

  • awk正則運算語句(~,~!等同!~)

[[email protected] ~]$ awk 'BEGIN{info="this is a test";if( info ~ /test/){print "ok"}}'
ok

  • awk內建使用正則表示式函式

gsub( Ere, Repl, [ In ] )

sub( Ere, Repl, [ In ] )

match( String, Ere )

split( String, A, [Ere] )

通過上面細述,不知道大家有沒有對awk正則表示式有一個更加清楚的認識。 有什麼問題可以與我交流!

相關推薦

awk 表示式運算子詳細介紹

前言:使用awk作為文字處理工具,正則表示式是少不了的。 要掌握這個工具的正則表示式使用。其實,我們不必單獨去學習它的正則表示式。正則表示式就像一門程式語言,有自己語法規則已經表示意思。 對於不同工具,其實大部分表示意思相同的。在linux眾多文字處理工具(awk,sed,grep,perl)裡面用到正則表

js中字串表示式法則patternRegExpflagsexec

全棧工程師開發手冊 (作者:欒鵬) js中字串正則表示式 正則法則的應用 正則表示式 = /pattern/flags 其中flags中g表示匹配全部,i表示不區分大小寫,m表示匹配多

shell指令碼之表示式函式grepsedawkprintf等基本命令配置詳解

一、正則表示式 簡介: 正則表示式(或稱Regular Expression,簡稱RE)就是由普通字元(例如字元 a 到 z)以及特殊字元(稱為元字元)組成的文字模式。該模式描述在查詢文字主體時待匹配的一個或多個字串。正則表示式作為一個模板,將某個字元模式與所搜尋的字串進

Shell基礎(四):表示式cutawksed命令

前言: 正則表示式是描述字元排列和匹配模式的一種語法規則。主要用於字串的模式分割、匹配、查詢及替換。(主要為了模糊匹配) 1、正則表示式與萬用字元區別 ①萬用字元(* ? [])用來匹配符合條件的檔名

表示式grepsed和awk

開發十年,就只剩下這套架構體系了! >>>   

表示式MathSimpleDateFromatCalendar類+JAVA學習筆記-DAY14

14.01_常見物件(正則表示式的概述和簡單使用) A:正則表示式 是指一個用來描述或者匹配一系列符合某個語法規則的字串的單個字串。其實就是一種規則。有自己特殊的應用。 作用:比如註冊郵箱,郵箱有使用者名稱和密碼,一般會對其限制長度,這個限制長度

表示式MathSystemBigDecimalDateSimpleDateFormatCalendar

1、正則表示式 ● 匹配正確的數字:   匹配正整數:“\\d+”   匹配正小數:"\\d+\\.\\d+"   匹配負整數:"-\\d+"   匹配負小數:"-\\d+\\.\\d+"   匹配保留兩位小數的正數:"\\d+\\.\\d{2}"   匹配保留 1-3 位小數的正數:"\\

第四周作業(aliasgrep表示式find命令的基本用法)

1.命令別名 alias的用法 通過alias命令實現: (1)alias不帶任何選項將顯示當前shell下所有的可用的命令別名的資訊,其中,等號之前表示新的命令名稱,等號右邊表示的是要替代的命令及其引數。 (2)定義別名: alias new_name='old_name options' 注:通

java:表示式Pattern和Matcher類小結

  最近在實際開發中遇到了2個坑,都和正則表示式有關。一個是public String[] split(String regex),入參居然是正則表示式!!!另一個坑與Pattern、Matcher類的操作有關。都是對java的正則表示式不夠熟悉導致。特地整理一

表示式Pattern和Matcher類Math類Random類System類BigDecimal類Date類SimpleDateFormat類Calendar類

1.正則表示式 即給定的一個用來描述符合一定規則的字串的單個字串,是一種規則; 正則表示式的組成規則: 規則字元在java.util.regex Pattern類中 A:字元 x 字元 x。舉例:‘a’表示字元a \ 反斜線字元。 \n 新行(換行)符 (’\u

JAVA 常用類:表示式Math類Random類System類Date類和Calendar類+程式碼

一、知識點體系圖 二、程式碼演示及注意事項 (1)正則表示式的程式碼例項 public class Test4 { public static void main(String[] args) { // 需求:獲取下面這個字串中由三個字元

jmeter之斷言資料提取器(表示式jsonpathbeanshell)聚合報告引數化

  ctx - ( JMeterContext ) - gives access to the context vars - ( JMeterVariables ) - gives read/write access to variables: v

【選擇器小結】表示式XPath選擇器CSS選擇器小結和使用場景

$&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&

表示式()[]{}的區別

正則表示式的() [] {} 有著不同的意思 () 是為了提取匹配字串的,表示式中有幾個()就有幾個相應的匹配字串 (\s*)表示連續空格的字串 [] 是定義匹配的字元範圍。比如[a-zA-Z0-9]表示相應位置的字元要匹配英文字元和數字。[\s*表示空格或者*號] {}一般是用來匹

ASP.NET開發中主要的字元驗證方法-JS驗證表示式驗證控制元件後臺驗證

在ASP.NET開發中主要的驗證方法收藏 <1>使用JS驗證 匹配中文字元的正則表示式: [\u4e00-\u9fa5] 匹配雙位元組字元(包括漢字在內):[^\x00-\xff] 備註:可以用來計算字串的長度(一個雙位元組字元長度計2,ASCII字元計1) 匹配空白行的正則表示式:\n\s

文字處理(grepsed)表示式vim基礎

文字處理三劍客:(grep、sed)                 grep命令:Global search REgular expression and Print out t

JavaScript基礎(十一)表示式3D拖拽相簿

正則表示式、3D拖拽相簿 正則表示式 需求:找出一串字串中的數字 初識正則表示式 正則表示式-匹配子項 正則表示式-轉義字元 \b應用案例 \1的使用 正則表示式-字符集 正

Linux日常——shell工具之grep(包含表示式)sed

grep行過濾器 grep是⼀種查詢過濾⼯具 正則表示式在grep中⽤來查詢符合模式的字串。 egrep相當於grep -E,表⽰採⽤Extended正則表示式語法。 fgrep相當於grep - F,表⽰只搜尋固定字串⽽不搜尋正則表示式模式,不會按正則

爬蟲實戰:頁面解析詳細指南(表示式XPathjsoupGson)

爬蟲的第二步,是對原始碼進行解析,提煉出目標內容。 本篇我們主要介紹以下 4 種常用的解析技術: 正則表示式 XPath jsoup Gson 正則表示式 正則表示式(Regular Expression),電腦科學的一個概念。通常被用來檢索、替

JavaScript(表示式表單驗證郵箱驗證函式HTML DOM)

正則表示式 1.定義:它是由一個字元序列形成的搜尋模式,當在文字中搜索資料時,可以用搜索模式來描述你要查詢的內容。它可以是一個簡單的字元,或一個更復雜的模式。它可用於所有文字搜尋和文字替換操作。 2.Eg:var patt = /youngamber/i