Linux基礎正規表示式 grep,sed

2022-07-08 22:42:18 字數 1808 閱讀 1286

先說明語系對正規表示式的影響

lang=c:0,1,2,3,4...a,b,c,d...z a b c d ... z

lang=zh_cn:0,1,2,3,4...a a b b c c d d... z z

因為不同語系用[a-z]篩選的不同,所以出現了特殊符號

[:alnum:]  :  即0-9,a-z,a-z,英文大小寫字元和數字,

[:alpha:]   :  即a-z,a-z,任何英文大小寫字元

[:digit:]      :  即0-9,所有數字

[:upper:]   :  即a-z,所有大寫字元

[:lower:]     :   即a-z,,所有小寫字元

[:space:]   :  任何會產生空白的字元,包括空格,tab和cr等

[:blank:]    :  空格和tab

[:cntrl:]     : 鍵盤上的控制按鍵,包括c,lf,tab,del等

其他參考網上相關資料

現在看不到沒關係,下面有例子

grep的一些高階引數

再11.5中已經討論到了grep的基本用法

grep:分析一行資訊

grep '查詢的字串' filename

找到的話就列出字串存在的行

grep -i 忽略大小寫

grep -n 順便輸出行號

grep -c 只計算找到的次數,不顯示行

grep -v '' filename 顯示沒有的行

grep --color=auto '' filename   關鍵字有特殊顏色

grep -an1 -bn2 『字串』 filename

a.(反向,不論大小寫)查詢特定字串

小數點,星號,反斜槓,大括號,單引號,不包括小括號(小括號是可以直接找到的)

b.利用中括號查詢集合字元(就是可能出現的都寫在中括號中,加^變成不存在的)

d.使用行首字元^和行尾字元$

找出(去除)空白行

^$grep -v '^$' 'filename' | grep -v '^#'

本身也是乙個管道命令,可以分析standard input的,而且sed還可以將資料進行替換,刪除,新增,選取特定行等功能

sed [-nefr] [』動作『]

引數:-n:安靜模式,只有經過sed特殊處理的那一行(或者操作)才會被列出來    

預設stdin和修改後的資訊都會列印出來,

-e:直接在命令列模式進行sed的動作編輯

-f:直接將sed動作寫在乙個檔案中,-f filename可以執行filename內的sed動作

-r:sed動作支援的是擴充套件型正規表示式(預設是基礎正規表示式語法)

-i:直接修改讀取的檔案內容,而不是由螢幕輸出  (預設是讀取修改後輸出到螢幕,原檔案不會改變)

動作=[n1[,n2]]function

function:

a:新增,後接字串,會在指定行的下一行插入一行

c:替換,後接字串,替換n1,n2之間的行

d:刪除,不加字串

i:插入,後接字串,再指定行的上一行插入一行        

p:列印,將某個選擇的資料列印出來,通常與sed -n一起執行

s:替換,可以直接進行替換工作。通常搭配正規表示式

以行(hang)為單位的新增(sed '-2a str')和刪除(sed 'n1,n2d')功能:

sed -i  's/../../g' filename

正規表示式 1 正規表示式基礎

1.正規表示式基礎 正規表示式描述了一種字串匹配的模式,即可以使使用者通過一系列普通字元或特殊字元構建能夠明確描述文字字串的匹配模式,可以用來檢查某個字串是否含有某種子字串,將匹配的子字串做替換或者從某個字串中取出符合某個條件的子字串等。1.1 正規表示式的基本結構 乙個正規表示式就是由普通字元 如...

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

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

正規表示式基礎

限定符 d 匹配非負整數 正整數 0 0 9 1 9 0 9 匹配正整數 d 0 匹配非正整數 負整數 0 0 9 1 9 0 9 匹配負整數 d 匹配整數 d d 匹配非負浮點數 正浮點數 0 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 匹配正浮點數 d...