Shell中的正規表示式

2021-05-24 00:42:24 字數 2262 閱讀 5725

1 什麼是正規表示式:

1. 乙個字符集.

這裡的字符集裡的字元表示的就是它們字面上的意思.正規表示式最簡單的情況就是僅僅由字符集組成,而沒有其他的元字元.

2. 錨.

乙個錨指明了正規表示式在一行文字中要匹配的位置,例如^和$就是錨.

3. 修飾符

它們用於展開或縮小(即是修改了)正規表示式匹配文字行的範圍.修飾符包括了星號.括號和反斜槓符號.

正則表達是的主要作用是用來文字搜尋和字串操作.乙個正規表示式匹配乙個字元或是一串字

符--完整的一串字元或是另外乙個字串的子串.

星號 -- * -- 匹配前乙個字元的任意多次(包括零次).

點 -- . -- 匹配除了新行符之外的任意乙個字元. [1]

脫字元 -- ^ -- 匹配一行的開頭,但依賴於上下文環境,可能在正規表示式中表示否定乙個字符集的意思.

美元符 -- $ -- 在正規表示式中匹配行尾."^$" 匹配空行.

方括號 -- [...] -- 在正規表示式中表示匹配括號中的乙個字元."[xyz]" 匹配字元x, y, 或z.

反斜槓字元 -- / -- 轉義(escapes) 乙個特殊的字元,使這個字元表示原來字面上的意思."/$"表示了原來的字面意思"$",而不是在正規表示式中表達的匹配行尾的意思.同樣,"//"也被解釋成了字面上的意思"/".

轉義(escape)"尖角號" -- /<.../> -- 用於表示單詞的邊界.尖角號必須被轉義,因為不這樣做的話它們就表示單純的字面意思而已."/" 匹配單詞"the",但不匹配"them", "there", "other",等等.

問號 -- ? -- 匹配零或乙個前面的字元. 它一般用於匹配單個字元.

加號 -- + -- 匹配乙個或多個前面的字元.它的作用和*很相似,但唯一的區別是它不匹配零個字元的情況.

轉義"大括號" -- / -- 指示前面正規表示式匹配的次數.

要轉義是因為不轉義的話大括號只是表示他們字面上的意思.這個用法只是技巧上的而不是基本正規表示式的內容.

"[0-9]/" 精確匹配5 個數字 (從 0 到 9 的數字).注意: 大括號不能在「經典」(不是posix 相容)的正規表示式版本的awk 中使用. 然而, gawk 有乙個選項--re-interval 來允許使用大括號(不必轉義).

豎線 -- | -- "或"正則操作符用於匹配一組可選的字元.

shell 指令碼也能啟動他自已的子程序. 這些子shell(即子程序)使指令碼因為效率而同時進行多個子任務執行時能做序列處理.

一般來說,指令碼裡的乙個外部命令(external command)能生成(forks)出乙個子程序,然而bash 內建(builtin)的命令卻不這樣做,因此,內建命令比起外部的等價命令執行起來更快

圓括號裡的命令列表

( 命令1; 命令2; 命令3; ... )

嵌在圓括號裡的一列命令在乙個子shell 裡執行.

注意: 在子shell 裡的變數不能被這段子shell **塊之外外面的指令碼訪問.這些變數是不能被產生這個子shell 的父程序(parent process)訪問的,實際上它們是區域性變數(local variables).

################################start

script#######################################

1 #!/bin/bash

2 # allprofs.sh: 列印所有使用者的配置檔案

34 # 由 heiner steven 編寫, 並由本書作者修改.

56 file=.bashrc # 在一般的指令碼裡,包含使用者配置的檔案是".profile".

7 #8

9 for home in `awk -f: '' /etc/passwd`

10 do

11 [ -d "$home" ] || continue # 如果沒有家目錄,跳過此次迴圈.

12 [ -r "$home" ] || continue # 如果目錄沒有讀許可權,跳過此次迴圈.

13 (cd $home; [ -e $file ] && less $file)

14 done

1516 # 當指令碼終止時,不必用'cd'命令返回原來的目錄,

17 #+ 因為'cd $home'是在子shell 中發生的,不影響父shell.

1819 exit 0

################################end

script#########################################

Shell 中的 正規表示式

常接觸shell指令碼語言的,經常會看到乙個shell命令接一堆亂七八糟的option,類似這樣的sed e s 雖然知道那肯定是乙個邏輯條件組合,但是如果不是熟悉正規表示式的人,絕對看的眼花.這裡學習記錄一下正規表示式的一些基本用法.正規表示式也叫正規表示法,就是處理字串的方法,他是以行為單位進行...

Shell中的正規表示式

hel o helo hello hellllllo.aa.表示前三個字元可以為任意 第四個和四五個字元要為a 第六個字元可以為任意 任意字元可以是乙個空格 hello 表示匹配以hello開頭的行 roo 表示行首的前三個字元為任意字元 第四到六的字元為roo 第七個字元開始可以重複匹配hello...

shell正規表示式

句點 匹配單字元 1 匹配任意單ascii 字元,可以為字母,或為數字。2 舉例 xc.匹配dexc1t 23xcdf 等,w.w.w.匹配rwxrw rw 行首以 匹配字串或字串行 1 允許在一行的開始匹配字元或單詞。2 舉例 01 匹配0011cx4 c01sdf 等,d 匹配drwxr xr ...