sed

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 的數字與字元