sed 主要用来批量編輯文件,快速置換、修改等功能
命令:
sed [-hnV][-e<script>][-f<script>][file]
參數說明:
- -e<script>或–expression=<script>
- -f<script文件>或–file=<script>
- -h或–help 。
- -n或–quiet或–silent 顯示處理後的結果
- -V或–version 版本訊息
script 命令說明:
- a :新增, a 的后面可以接字串,而这些字串會出現在目前的下一行
- c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之間的行
- d :删除,因为是删除啊
- i :插入, i 的后面可以接字串,而这些字串會出現在目前的上一行
- p :輸出。通常 p 會与参數 sed -n 一同使用
- s :取代,可以直接进行取代的工作。通常搭配正则表达式。
script 在命令需使用單引號包起來,並在命令前面,加上行數, 常見的有2d(刪除第2行)2,$d(從第2行到最後), 2,5d (刪除2~5行),其他命令以起類推。
常用的取代及正規化法
sed 's/要被取代的字串/新的字串/g'
範例:
$ /sbin/ifconfig eth0 | grep 'inet addr' | sed 's/^.*addr://g' 192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
正規化法 常用的定義
命令 | 說明 |
^word | 搜尋的字串(word)在行首 |
word$ | 搜尋的字串(word)在行尾 |
. | 『一定有一個任意字元』的字符 |
\ | 跳脫字符,將特殊符號的特殊意義去除 |
* | 重複零個到無窮多個字 |
[list] | 字元集合的字,裡面列出想要擷取的字元 |
[n1-n2] | 字元集合的字,裡面列出想要擷取的字元範圍 |
[^list] | 字元集合的字,裡面列出不要的字串或範圍 |
\{n,m\} | 連續 n 到 m 個的『前一個字 』 若為 \{n\} 則是連續 n 個的前一個字 若是 \{n,\} 則是連續 n 個以上的前一個字 |
[: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:] | 標點符號 (punctuation symbol),亦即:” ‘ ? ! ; : # $… |
[:upper:] | 大寫字元,亦即 A-Z |
[:space:] | 任何會產生空白的字元,包括空白鍵, [Tab], CR 等等 |
[:xdigit:] | 16 進位的數字類型,因此包括: 0-9, A-F, a-f 的數字與字元 |