shell程式設計之正式表示式

2021-10-09 05:48:30 字數 3398 閱讀 4062

二、文字處理器

正規表示式又稱正規表示式、常規表示式。在**中常簡寫為 regex、regexp 或 re。正規表示式是使用單個字串來描述、匹配一系列符合某個句法規則的字串,簡單來說, 是**一種匹配字串的方法,通過一些特殊符號,實現快速查詢、刪除、替換某個特定字串**。
正規表示式的字串表達方法根據不同的嚴謹程度與功能分為基本正規表示式和擴充套件正規表示式。基礎正規表示式是常用正規表示式的基礎部分。文字處理工具中的grep和sed支援基礎正規表示式。下面介紹幾種常見的用法

grep -n 'the' 123.txt ####查詢文字123.txt中的帶the的特定字元的行

grep -vn 『the』 123.txt ####查詢文字中不帶the的行

grep -in 'the' 123.txt ####不區分大小寫查詢文字中帶the的行

grep -n 'sh[io]rt' 123.txt ####查詢帶shirt或short的行

grep -n 'oo' 123.txt ####查詢包含重複字元oo 的行

grep -n '[^w]oo' 123.txt ####查詢以w開頭包含重複字元oo的行

grep -n 'ooo' 123.txt ####查詢包含重複字元ooo的行

grep -n 'woo*d' 123.txt ####查詢以w開頭其中最少含乙個o或多個以d結尾單詞的行

grep -n '[0-9][0-9]*' 123.txt ####查詢最少含乙個或多個0到9數字的行

grep -n 'wo*d' 123.txt ####查詢以w開頭其中含0個或多個o以d結尾的行

grep -n 'o\' 123.txt ####查詢帶2個o子符的行

grep -n 'wo\d' 123.txt ###查詢以w開頭以d結尾,中間含2到5個o的字串

grep -n 'wo\d' 123.txt ####查詢以w開頭d結尾,中間包含兩個或2個以上o的字元的行

為了簡化整個指令,需要使用範圍更廣的擴充套件正規表示式。

egrep -v '^#|^$|^*#' /etc/httpd/conf/httpd.conf ####查詢httpd檔案中除了以#開頭以空格結尾的任何行

sed(stream editor)是乙個強大而簡單的文字解析轉換工具,可以讀取文字,並根據指定的條件對文字內容進行編輯(刪除、替換、新增、移動等),最後輸出所有行或者僅輸出處理的某些行。sed 也可以在無互動的情況下實現相當複雜的文字處理操作,被廣泛應用於 shell 指令碼中,用以完成各種自動化處理任務。
sed -n 『3p』 123.txt ####檢視檔案中第三行

sed -n 『p』 123.txt ####相當於cat 123.txt

sed -n 『3,5p』 123.txt ####檢視檔案中第三到第五行

sed -n 『p;n』 123.txt ####檢視檔案中的奇數行

sed -n 『n;p』 123.txt ####檢視檔案中的偶數行

sed -n 『1,5』 123.txt ####檢視檔案中1到5行中的奇數行

sed -n 『10,katex parse error: expected 'eof', got '#' at position 21: …' 123.txt #̲###檢視10到末行中的偶數行…/p』 123.txt ####輸出以數字結尾行

sed -n 『//p』 123.txt ####輸出包含單詞wood的行 < >代表單詞邊界

nl 123.txt | sed 『3d』 ####刪除第三行

nl 123.txt | sed 『/cross/d』 ###刪除包含cross的行 !可以用來取反

sed 『/1

/d』 123.txt ####刪除以小寫字母開頭的行

sed 『/.katex parse error: expected 'eof', got '#' at position 17: …d』 123.txt #̲###刪除以「.「結尾的行 …/d』 123.txt ####刪除所有空行

sed 『s/the/the/』 123.txt ####將每行中的第乙個the替換成the

sed 『s/i/l/2』 123.txt ####將每行中的第2個i替換成l

sed 『s/the/the/g』 123.txt ####將檔案中的所有the替換為the

sed 『s/o//g』 123.txt ####將檔案中的所有o刪除(替換為空串)

sed 『s/^/#/』 123.txt ####每行行首插入#號

sed 『/the/s/^/#』 123.txt ####在包含the的每行行首插入#號

sed 『3,5s/the/the/g』 123.txt ####將3到5行中的所有the替換成the

sed 『/the/s/o/o/g』 123.txt ####將包含the的所有行中的o替換成o

遷移符合條件的文字在使用 sed 命令遷移符合條件的文字時,常用到以下引數.

h:複製到剪貼簿;

g、g:將剪貼簿中的資料覆蓋/追加至指定行;

w:儲存為檔案;

r:讀取指定檔案;

a:追加指定內容

sed 『/the/;$g』 123.txt ####將包含the的行遷移到檔案末尾,用於多個操作

sed '1,5;'17g 123.txt ####將第一行到五行內容轉移到17行後

sed 『/the/w out.file』 123.txt ####將包含the的行儲存到檔案out.file中

sed 『/the/r /etc/hostname』 123.txt ####將檔案/etc/hostname內容新增到包含the的每行以後

sad 『3anew』 123.txt ####在第三行後插入乙個新行,內容為new

sed 『/the/anew』 123.txt ####在包含the的每行後插入乙個新行,內容為new

sed 『3anew1\nnew2』 123.txt ####在每行後插入多個內容,中間的\n表示換行

使用指令碼編輯檔案使用 sed 指令碼將多個編輯指令存放到檔案中(每行一條編輯指令),通過「-f」選項來呼叫

sed 『1,5;17g』 123.txt ####將第一行到第五行內容轉移到第17行後

編輯乙個新的文字opt.list並通過sed呼叫

a-z ↩︎

shell程式設計之正規表示式

1 正規表示式 其實就是一種規範,也就是模式,約束字串等符合什麼樣的格式,比如要求字串必須a開頭,t結尾,符合這樣條件的字串就要用到正規表示式。2 兩套庫 gnu linux中有有兩套庫用足正規表示式程式設計,posix庫,自帶的 pcre庫,perl,功能比較全,本文採用perl。3 初體驗 eg...

Shell程式設計之正規表示式

1.萬用字元 2.正規表示式與萬用字元元字元作用 前乙個字元匹配0次或任意多次 匹配除了換行符外任意乙個字元 匹配行首。例如 hello會匹配以hello開頭的行 匹配行尾。例如 hello 會匹配以hello結尾的行 匹配中括號中指定的任意乙個字元,只匹配乙個字元 匹配除中括號的字元意外的任意乙個...

Shell程式設計之正規表示式

目錄 正規表示式 概述 基礎正規表示式 前乙個字元匹配 0 次,或任意多次 匹配除了換行符外任意乙個字元 匹配行首,匹配行尾 匹配中括號中指定的任意乙個字元,只匹配乙個字元 匹配除中括號的字元以外的任意乙個字元 轉義符 表示其前面的字元恰好出現 n 次 表示其前面的字元出現不小於 n 次 匹配其前面...