使用sed -i --和sed -i -e 搜尋與取代文字

貝里昂
1 min readSep 12, 2020

--

sed是Linux內非常強大的文字編輯器,用於處理文檔內字串的取代非常的方便。

sed is a stream editor. A stream editor is used to perform basic text transformations on an input stream (a file or input from a pipeline).

sed基礎用法

sed SCRIPT INPUTFILE...

舉例來說,我想要把input.txt檔案內的hello改成world,並且輸出到output.txt

sed 's/要被取代的字串/取代的字串/' 輸入的檔案 > 輸出的檔案
sed 's/hello/world/' input.txt > output.txt

-i:sed直接(in-palce)編輯字串功能

如果我想要直接編輯input.txt檔案內某字串,不另外輸出到別的文字檔。則可以使用 -i 這個flag。

-i:直接編輯文檔內字串

This option specifies that files are to be edited in-place.

sed -i 's/要被取代的字串/取代的字串/' 直接被取代字串的檔案
sed -i 's/hello/world/' file.txt

-e:指定script在哪邊

-e :告訴sed,-e 的後面就是script。如果不給-e的話,sed會把第一個不是option的參數當作script,第二個不是option的參數當作輸入檔案。

如下指令都是一樣的作用:

sed 's/hello/world/' input.txt > output.txtsed -e 's/hello/world/' input.txt > output.txt
sed --expression='s/hello/world/' input.txt > output.txt

sed -i -e script file

-i-e 一起用的範例。

echo "123" > sedtest.txt
sed -i -e 's/123/456/g' sedtest.txt

還有看過sed -i -- script file的寫法。作用似乎與 -i -e一樣。但查不太到這樣的用法。

echo "123" > sedtest.txt
sed -i -- 's/123/456/g' sedtest.txt

參考文件

--

--