sed 命令詳解
阿新 • • 發佈:2019-02-17
簡介
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) ) |