1. 程式人生 > >sed 命令詳解

sed 命令詳解

簡介

sed 是一種線上編輯器,它一次處理一行內容。處理時,把當前處理的行儲存在臨時緩衝區中,稱為“模式空間”(pattern space),接著用sed命令處理緩衝區中的內容,處理完成後,把緩衝區的內容送往螢幕。接著處理下一行,這樣不斷重複,直到檔案末尾。檔案內容並沒有 改變,除非你使用重定向儲存輸出。Sed主要用來自動編輯一個或多個檔案;簡化對檔案的反覆操作;編寫轉換程式等。

sed 的命令開始於單個字元,例如:

    echo "front" | sed '1s/front/back/'
    back
    echo "front" | sed '2s/front/back/'
    front

1 是地址,代表處理的行號,s 代表替換(substitute)命令,其後跟著查詢和替代的字串,斜槓(/)是分隔符,分割符是隨意的,也可以是下劃線(_)。

sed 選項

選項 說明
-n 使用安靜(silent)模式。在一般 sed 的用法中,所有來自 STDIN 的資料一般都會被列出到終端上。但如果加上 -n 引數後,則只有經過sed 特殊處理的那一行(或者動作)才會被列出來
-e 直接在命令列模式上進行 sed 的動作編輯。
-f 直接將 sed 的動作寫在一個檔案內, -f filename 則可以執行 filename 內的 sed 動作。
-r sed 的動作支援的是延伸型正規表示法的語法。(預設是基礎正規表示法語法)
-i 直接修改讀取的檔案內容,而不是輸出到終端。

sed 地址表示法

地址 說明
n 行號
$ 最後一行
/regexp/ 匹配 regexp 的行
addr1,adde2 從 adde1到addr2範圍內的行
first-step 從first開始,間隔為step
addr1,+n addr1開始的n個文字行
addr! 除addr之外的行

sed 基本命令

命令 說明
= 輸出當前行號
a 在當前行後追加文字
d 刪除當前行
i 在當前行之前插入文字
p 列印當前行
q 退出 sed
s/regexp/replacement/ 替換regexp 為 replacement
y/set1/set2 把 set1 中的字元轉變為相對應的 set2 中的字元( len (set1) == len(set2) )