[: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