s Command
s(substitue) 指令是 sed 中最常用的,可以把文件中的字串替換掉。基本的syntax s/RegEx/SubEx/
,例如 s/Old/New/
:
$ echo 'this is old' > input.txt
$ sed s/old/new/ input.txt
這個sed指令可以把文件中的old字串換成new
sed 執行流程
sed不像一般程式語言有 variable 的概念,但是sed有兩個特別的buffer(or workspace)可以讓sed執行較複雜的工作。這兩個buffer稱為Pattern space和Hold space。sed執行是從input stream中,每次執行一行,流程大致如下:
- sed從input stream讀一行的內容
- 把換行符號(trailing newlines)移除
- 把它放到pattern sapce
- 執行指令(上面的例子就是s command把old取代成new)
- 把換行符號(trailing newlines)補回來
- sed 把結果印到 output steam
- 如果還有input的話,就繼續執行step1,否則就結束
而pattern space在每一個迴圈都會清除,但是hold space則不會,可參考‘h’, ‘H’, ‘x’, ‘g’, ‘G’指令。
s 指令的其它選項
-e: sed script,可以連接多個 sed script,如果只有一個 sed script 則 -e 可以省略。例如: $ echo 1234567890 …