sed -e
和sed -f
选项有什么区别。其中哪些应该用于就地编辑。我无法从手册页中清楚地理解它们的含义。
根据 sed 的手册页
-e 脚本--表达式=脚本将脚本中的命令添加到处理输入时要运行的命令集
这意味着 sed 将在命令行本身上执行直接传递给它的命令,例如sed -e 's/foo/bar/g'
其中,-f 脚本文件--文件=脚本文件将文件脚本文件中包含的命令添加到处理输入时要运行的命令集。
使用 -f sed 时,需要-f
选项之后指定的文件中的命令。这通常对于复杂操作很有用。
只要就地编辑,可以使用任何选项。例如:
sed -i -e 's/foo/bar/g'
sed -e <commands>
执行在命令行上传递的命令,如 sed -e s/foo/bar/
,而sed -f <file>
执行在传递的文件中找到的命令。
它们都与就地编辑无关。那是-i <backup_extension>
.如果未传递扩展(如 sed -i '' -e s/foo/bar/ file_to_edit
),则不会进行备份。