溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在shell腳本中使用正則表達式

發(fā)布時間:2021-07-27 13:49:40 來源:億速云 閱讀:170 作者:Leah 欄目:開發(fā)技術

這篇文章將為大家詳細講解有關如何在shell腳本中使用正則表達式,文章內(nèi)容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

正則表達式的概念及特點:

  正則表達式是對字符串操作的一種邏輯公式,就是用事先定義好的一些特定字符、及這些特定字符的組合,組成一個“規(guī)則字符串”,
這個“規(guī)則字符串”用來表達對字符串的一種過濾邏輯。規(guī)定一些特殊語法表示字符類、數(shù)量限定符和位置關系,然后用這些特殊語法和普
通字符一起表示一個模式,這就是正則表達式(Regular Expression)。
給定一個正則表達式和另一個字符串,我們可以達到如下的目的:

  1. 給定的字符串是否符合正則表達式的過濾邏輯(稱作“匹配”);
  2. 可以通過正則表達式,從字符串中獲取我們想要的特定部分。

正則表達式的特點:

  1. 靈活性、邏輯性和功能性非常的強;
  2. 可以迅速地用極簡單的方式達到字符串的復雜控制。
  3. 對于剛接觸的人來說,比較晦澀難懂。

一、正則表達式

1、定義

(1)、通常用于判斷語句中,用來檢查某一字符串是否滿足某一格式

(2)、正則表達式是由普通字符與元字符組成

(3)、普通字符包括大小寫字母、數(shù)字、標點符號及一些其他符號

(4)、元字符是指在正則表達式中具有特殊意義的專用字符,可以用來規(guī)定其前導字符(即位于元字符前面的字符)在目標對象中的出現(xiàn)模式

2、基礎正則表達式常見元字符(支持的工具:grep、egrep、sed、awk)

\:轉義字符,用于取消特殊符號的含義,例: !、\n、$等
^:匹配字符串開始的位置,例: a、、the、 #、[a-z]
$:匹配字符串結束的位置,例:word$、^$?匹配空行
.:匹配除\n之外的任意的一個字符,例: go.d、 g..d
*:匹配前面子表達式0次或者多次,例: good、 go.d
[list]:匹配list列表中的一個字符,例: go[ola]d,[abc]、[a-z]、[a-z0-9]、[0-9]匹配任意一位數(shù)字
[^list]:匹配任意非list列表中的一個字符,例: [^0-9]、[^A-Z0-9]、[^a-z]匹配任意一位非小寫字母
\{n\}:匹配前面的子表達式n次,例: go{2}d、'[0-9]{2}'匹配兩位數(shù)字
\{n,\}:匹配前而的子表達式不少于n次,例: go{2,}d、'[0-9]{2,}'匹配兩位及兩位以上數(shù)字
\{n,m\}:匹配前面的子表達式n到m次,例: go{2,3}d、'[0-9]{2,3}'匹配兩位到三位數(shù)字
注:egrep、awk使用{n}、{n,}、{n,m}匹配時“{}”前不用加“\”

3、擴展正則表達式元字符:(支持的工具:egrep、awk)

+:匹配前面子表達式1次以上,例:gd+d,將匹配至少一個0,如god、good、goood等
?:匹配前面的子表達式0次或者次,例:go?d,將匹配gd或god
():將括號中的字符串作為一個整體,例:g(oo)+d,將匹配oo整體1次以上,如good、gooood等
l:以或的方式匹配字符串,例:g(oo | la)d,講匹配good或者glad

二、正則表達式示例

zhangsan1234.@qq.com

lisi_3456@sina.com.cn

wang wu@163.com

qian@qi@wo.cn

jc12@kfc.com

要求:

用戶名@:字符長度在6位及以上,開頭只能是字母或者_,中間可使用的符號有. - # _

子域名:可能是大小寫字母,數(shù)字,_ -

.頂級域名:字符串長度一般在2到5之間 

關于如何在shell腳本中使用正則表達式就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI