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