正則表達式筆記 sed工具

[:alnum:] 代表英文大小寫字符及數字,即0-9 A-Z a-z

[:alpha:] 代表任何英文大小寫字符,即A-Z a-z

[:blank:] 代表空格鍵與TAB鍵

[:cntrl:] 代表鍵盤上面的控制案件,即包括CR LF TAB DEL等

[:digit:] 代表數字 0-9

[:graph:] 除了空格鍵與TAB鍵外其他的所有鍵

[:lower:] 代表小寫字符 a-z

[:print:] 代表任何可以被打印出來的字符

[:punct:] 代表標點符號 即"';:!#$等

[:upper:] 代表大寫字符 A-Z

[:space:] 任何會產生空白的字符 包括空格鍵和TAB

[:xdigit:] 代表十六進制的數字類型 包括0-9 a-f A-F 


                                    Sed工具

sed參數

-n 使用安靜模式 一般數據都會被列出來到屏幕 加-n則值顯示經過sed處理的行或者操作才被列出來。

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

-f 直接將sed動作寫在一個文件內,-f filename則可以執行filename內的sed動作

-r sed的動作支持的是擴展性正則表達式的語法 默認是基礎正則表達

-i 直接修改讀取的文件內容,不是由屏幕輸出

n1,n2 代表進行動作的行數,例如在第10-20行進行動作 則 10,20[動作行爲]


a 新增,a的後面可以接字符串,這些字符串會在新的下一行出現

c 替換,c的後面可以接字符串,這些字符可以替換n1,n2之間的行

d 刪除,後面不接參數

i 插入,i後面可以接參數 插入的字符串會在新的上一行出現

p 打印,打印出數據 通常和sen -n一起進行

s 替換,可以直接進行替換的工作,通常s搭配g

擴展正則表達式

+ 重複一個或者一個以上的前一個RE字符

? 零個或者一個的前一個RE字符

| 或者的意思。例如 grep "aa|ab"

() 找出組的字符串.例如 g(aa|ab)d

()+多個重複組的判斷

範例一:將/etc/passwd的內容列出並且打印出行號 同時將2-5行刪除

nl /etc/passwd | sed '2,5d'

範例二:將第二行後添加一行爲aaaa

 nl /etc/passwd | sed '2a aaaa'

範例三:在第二行後加入兩行 aa bb

nl /etc/passwd | sed '2a aa \

> bb'

範例四:將2-5行內容替換爲no 2-5 number

nl /etc/passwd | sed '2,5c no 2-5 number'

範例五:僅列出文件內的5-7行

 nl /etc/passwd | sed -n '5,7p'


部分數據的查找和替換功能

sed 's/要被替換的數據/新的數據/g'

刪除匹配到的行

sed  -i   '/CREATE DATABASE/d' file

例:過濾出本機IP

ifconfig eth0 | grep "inet addr" | sed 's/^.*addr://g'| sed 's/Bcast.*$//g'

例:將aa每行的.替換爲!

 sed -i 's/\.$/\!/g' aa



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章