sed命令在处理文本时,会一行一行的进入模式空间并依次匹配,如果匹配到正则,则会对相应行进行处理(具体命令包括s替换 d删除 r读文件 w写文件等等 )。不管处理与否,每一行都会输出到标准输出(在没有使用-n选项的情况下)。
sed -n选项是静默输出,即不将进入模式空间的每一行输出到标准输出。
sed -i选项是就地编辑,我们可以简单的理解,在标准输出的结果是什么,加上-i选项,被编辑的文件就会变成什么样。所以-i 和-n选项在一起使用时必须小心。也许静默输出之后文件内容在-i选项的操作下全消失了。
另外 sed 的w命令,不需要接-i选项就可以直接将相应内容写到目标文件。