行動式使用

就地編輯雖然常見,但卻是一種非標準功能。一個可行的替代方案是使用中間檔案來儲存原始檔案或輸出。

sed 'sed commands' > file.out && mv file.out file
# or
mv file file.orig && sed 'sed commands' file.orig > file

要將 -i 選項與 GNU 和 FreeBSD 語法一起使用,必須指定副檔名並將其附加到 -i 選項。以下內容將被兩者接受,並生成兩個檔案,file.orig 的原始版本和 file 的編輯版本:

sed -i.orig 'sed commands' file

檢視檔案 file 的基本示例:

$ cat file
one
two
three
$ sed -i.orig 's/one/XX/' file
$ cat file                       # the original file has changed its content
XX
two
three
$ cat file.orig                  # the original content is now in file.orig
one
two
three

一個更復雜的例子,用行號替換每一行:

$ printf 'one\ntwo\n' | tee file1 | tr a-z A-Z > file2
$ sed -ni.orig = file1 file2
$ cat file1.orig file2.orig
one
two
ONE
TWO
$ cat file1 file2
1
2
1
2

為什麼需要備份檔案

為了在沒有備份檔案的情況下使用就地編輯,-i 必須被賦予零長度引數,而 FreeBSD sed 需要 -i 的引數,無論是附加還是單獨,而 GNU 可選引數擴充套件要求將引數附加到 -i。兩者都支援將引數附加到 -i,但如果不需要它,則 -i'' command-i extension 無法區分,因此零長度引數不能附加到 -i