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