正規表示式

2021-09-22 16:29:49 字數 2371 閱讀 5912

正規表示式

正規表示式是一種描述一組字串的模式,為處理大量文字、字串而定義的一套規則和方法,以行為單位進行處理。正規表示式分為兩類:基本正規表示式(bre)和擴充套件正規表示式(ere)。在linux中使用正規表示式較多的有三個工具,分別為grep,sed和awk,這三個工具被稱為linux文字處理的三劍客。

正規表示式元字符集

基本組成部分

sed簡介

sed 是一種新型的,非互動式的編輯器。它能執行與編輯器 vi 和 ex 相同的編輯任務。sed 編輯器沒有提供互動式使用方式,使用者只能在命令列輸入編輯命令、指定檔名,然後在螢幕上檢視輸出。sed 編輯器沒有破壞性,它不會修改檔案,除非使用 shell 重定向來儲存輸出結果。預設情況下,所有的輸出行都被列印到螢幕上。

sed 工作過程

sed 編輯器逐行處理檔案(或輸入),並將輸出結果傳送到螢幕。sed 的命令就是在 vi和 ed/ex 編輯器中見到的那些。sed 把當前正在處理的行儲存在乙個臨時快取區中,這個快取區稱為模式空間或臨時緩衝。sed 處理完模式空間中的行後(即在該行上執行 sed 命令後),就把該行傳送到螢幕上(除非之前有命令刪除這一行或取消列印操作)。sed 每處理完輸入檔案的最後一行後,sed 便結束執行。sed 把每一行都存在臨時快取區中,對這個副本進行編輯,所以不會修改或破壞原始檔。如圖 1:sed 處理過程。

sed命令使用

常用選項:

-n 使用安靜模式,在一般情況所有的 stdin 都會輸出到螢幕上,加入-n 後只列印被 sed 特殊處理的行

-e 多重編輯,且命令順序會影響結果

-f 指定乙個 sed 指令碼檔案到命令列執行,

-r sed 使用擴充套件正則

-i 直接修改文件讀取的內容,不在螢幕上輸出

sed操作命令

sed 操作命令告訴 sed 如何處理由位址指定的各輸入行。如果沒有指定位址,sed 就會處理輸入的所有的行

x:指定行號。

x,y:指定從x到y的行號範圍

/ pattern/:查詢包含模式的行 # # % %

/ pattern/ pattern/:查詢包含兩個模式的行

/ pattern/,x:從與 pattern的匹配行到x號行之間的行

x,/ pattern/:從x號行到與 pattern的匹配行之間的行

x,y!:查詢不包括x和y行號的行

r:從另乙個檔案中讀檔案

w:將文字寫入到乙個檔案

y:變換字元

q:第乙個模式匹配完成後退出

l:顯示與八進位制ascⅱ碼等價的控制字元

{}:在定位行執行的命令組

p:列印匹配行

=:列印檔案行號。

a:在定位行號之後追加文字資訊

i:在定位行號之前插入文字資訊。

d:刪除定位行

c:用新文字替換定位文字

s:使用替換模式替換相應模式

n:讀取下乙個輸入行,用下乙個命令處理新的行

n:將當前讀入行的下一行讀取到當前的模式空間。

h:將模式緩衝區的文字複製到保持緩衝區

h:將模式緩衝區的文字追加到保持緩衝區

x:互換模式緩衝區和保持緩衝區的內容

g:將保持緩衝區的內容複製到模式緩衝區

g:將保持緩衝區的內容追加到模式緩衝區。

awkawk 是一種很棒的語言,它適合文字處理和報表生成,其語法較為常見,借鑑了某些語言的一些精華,如 c 語言等。在 linux 系統日常處理工作中,發揮很重要的作用,掌握了 awk將會使你的工作變的高大上。awk 是三劍客的老大,利劍出鞘,必會不同凡響。

1、awk 的原理

通過乙個簡短的命令,我們來了解其工作原理。

awk 『』 /etc/passwd

echo hhh|awk 『』

awk 『』 /etc/passwd

通過第乙個指令你將會見到/etc/passwd 檔案的內容出現在眼前。現在,解釋 awk 做了些什麼。呼叫 awk時,我們指定/etc/passwd 作為輸入檔案。執行 awk 時,它依次對/etc/passwd 中的每一行執行 print 命令。所有輸出都傳送到 stdout,所得到的結果與執行 cat /etc/passwd 完全相同。現在,解釋**塊。在 awk 中,花括號用於將幾塊**組合到一起,這一點類似於 c 語言。在**塊中只有一條 print 命令。在 awk 中,如果只出現 print 命令,那麼將列印當前行的全部內容

正規表示式 正規表示式 總結

非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...

正規表示式 表示式

網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...

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

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