语法
sed [ -n ] 'editing command ' [ file .....]
sed [ -n ] -e 'editing command ' ..... [ file .....]
sed [ -n ] -f script-file..... [ file .....]
用途
为了编辑他的输入流,将结果生成到标准输出,而非以交互式编辑器的方式来编辑文件。虽然sed命令很多,能做很复杂的工作,但是它最常用的还是处理输入流的文本替换,通常是作为管道的一部分。
主要选项
-e 'editing command'
将editing command使用在输入数据上。当有多个命令需要应用时,就必须使用-e 了
-f script-file
自script-file 中读取编辑命令。当有多个命令需要执行时,此选项相当有用。
-n
不是每个最后已修改结果行都正常打印,而是现实以p指定(处理过的)的行
行为模式
读取每个输入文件的每一行,假如没有文件的话,则是标准输入。以每一行来说,sed会执行每一个英语到输入行的editing command 。 结果会写到标准输出(默认状态下,或是显示地使用p命令及-n选项)。若无-e 或 -f 选项,则sed会把第一个参数看做是要使用的editing command。
例子:
$ echo Tolstoy reads well. Tolstoy writes well. > example.txt 【输入样本】
$ sed 's/Tolstoy/Camus/' <example.txt 【没有设置g】
Camus reads well.Tolstoy writes well.
$ sed 's/Tolstoy/Camus/g' <example.txt 【设置了"g"】
Camus reads well.Camus writes well.
s/foo/bar/3 【更换第三个foo】
s//quux/ 【现在更换第一个】
sed -n '10,42p' foo.xml 【仅打印10-42行】
sed '/foo/,/bar/ s/baz/quux/g' 【仅替换范围内的行】
从含有foo的行开始,再匹配是否有bar 的行,再将匹配后的结果中,有baz的全换成quux (像ed、ex这类的检阅程序,或是vi内的冒号命令提示模式下,都认识此语法)。