Linux正規表示式(筆記)

2021-07-29 03:47:35 字數 2417 閱讀 4516

用來匹配符合條件的檔名,適用於ls,find,cp命令,但是卻不能用於處理字串的。

* #匹配1-多個字元

find system.*

? #匹配1個內容

find shad?w

#匹配括號中的內容

find shado[a-z]

但是linux中的正規表示式和萬用字元不是同乙個概念。這個需要區分。

用來在檔案中匹配符合條件的字串。適用於grep,awk,sed對檔案的操作,在linux shell 指令碼中使用最頻繁,用於對系統日誌抽取出有用的資訊。

#基本正規表示式

* #前乙個字元匹配0次或任意多次

注意:如果要匹配乙個a,要這樣寫"aa*",表示匹配至少含有乙個a的行

如果"a*",則會匹配所有內容,包括空白行,因為*是表示匹配字元0次以上

. #匹配除換行符外任意乙個字元

eg.--test.txt--

said

suud

s..d #匹配s和d之間有兩個字元的行

#.*表示所有內容

#s.*d匹配乙個行,s和d之間可以有任何字元

^ #匹配行首,如^hello表示匹配行首為hello的行

$ #匹配行尾,如o$表示匹配行位

^$ #表示匹配空白行

#表示匹配中括號中的任意乙個字元

[^] #表示匹配除中括號中的任意字元

\ 轉意符 使特殊符號失去特殊作用

a\ 將a字元匹配恰好n次

a\ 將a字元匹配n次以上

a\將a字元匹配n-m次

ab\c a和c之間有n-m個b

以上是基本的正規表示式

如果要對檔案中內容進行操作的話需要用到以下幾個命令:cut,awk,sed

cut [選項] 檔名

-f 列號,提取第幾列

-d 分割符,以什麼為分割。預設分隔符為tab鍵

eg. cut -d

":"-f

1,6 passwd

#以:為分割符,提取檔案passwd中的第1,6列

#這個命令一般用來提取有格式檔案中的資訊,如**等。系統管理員可以使用cut對passwd中的使用者進行提取後批量刪除等操作。但是卻存在一定侷限性,不是很智慧型。如果分割符為空格的話,很難提取出想要的內容。

printf

'輸出型別輸出格式' 輸出內容

#其輸出型別和輸出格式類似與c語言中的printf格式

輸出型別:

%ns 有n個字元

%ni 有n個整數

%m.nf 浮點數m,共有n個小數字

輸出格式:

\t 分隔符

\b 退格

。。。這條命令可以讀取檔案中的內容,對檔案中的內容進行格式化輸出,一般配合awk命令使用。

printf

'%s/t%s/t%s\n' | cat student.txt

printf

'%s/t%s/t%s\n'

$(cat student.txt)

awk

'條件 .. ' 檔名

條件即是關係表示式等,如果沒有則是無條件執行

執行動作一般為格式化輸出printf,流程控制語句。

eg.df | awk ''

#在awk中的特殊意義需要用""括起。$1是將字段變為第乙個變數,變數$0是檔名。

條件的使用:有begin和end。begin則是在開始便執行,end則是在最後才執行

那有什麼用呢

eg.awk 'begin' passwd

可以在開始將分隔符設定為":"。fs是內建變數,表示分隔符。

變數的比較

awk '$2>=60' student.txt

將第二字段大於60的行列出

sed命令與awk命令相似。但是sed命令可以直接檔案資料進行選取、替換、刪除、新增的命令。

sed [選項] '動作' 檔名

選項:-n對行進行處理

-i將操作儲存到檔案中

-e允許多條sed命令編輯,用;分隔

動作:na 內容 #在n行中進行追加內容

ni 內容 #在n行中進行插入內容

nd #刪除n行,n,md刪除n-m行

np #列印n行

nc 內容 #第n行替換

s/舊字元/新字元/g 字串替換

ns/舊字元/新字元/g 在n行中進行字串替換

eg。sed -n '2p' student #列印第二行

sed '2c haha' student #將第二行替換為haha

sed -i '3s/90/60/g' student #將第三行的90替換為60,並儲存到檔案中

Linux 正規表示式筆記

什麼是正規表示式 regular expression 簡單的說,正規表示式就是處理字串的方法,它是以行為單位來進行字串的處理行為,正規表示式 透過一些特殊符號的輔助,可以讓使用者輕易的達到 搜尋 刪除 取代 某特定字串的處理程式!基礎 延伸正規表示式 正規表示式的字串表示方式依照不同的嚴謹度而分為...

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

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

正規表示式 正規表示式函式 筆記

筆記直接使用pycharm製作,需要原始檔請私聊。正規表示式函式 1.match 2.search 3.全域性匹配函式 全域性匹配 re.compile 正規表示式 findall 資料 import re string poythonydasadcasa pat2 p.y 懶惰模式執行 較精準 r...