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