我想使用命令行来编辑文本文件,但不覆盖它。 我想保留文件的所有者,组和权限。
我有一个文件,其中包含一个设备使用次数的计数。 这个文件让我知道什么时候设备需要维修。 对安全性没有任何顾虑,我需要所有的用户都能够读写这个文件。
如果我使用sed来编辑计数,它将覆盖文件,文件的所有权和权限将被改变。 我注意到,当我用vi编辑文件时,文件的所有权和权限不会改变。
我想从命令行做同样的事情。 例如:
cat foo.txt foo ls -l foo.txt -rw-rw-rw- 1 root root foo.txt cat foo.txt | sed -e 's/foo/bar/' > foo.txt ls -l foo.txt -rw-r--r-- 1 joe admin foo.txt
这是一个问题,因为bill和joe都使用更新计数文件的脚本。 当乔使用它时,权限改变,防止账单使用它。
由于vi可以在不更改所有者和权限的情况下编辑文本,所以我认为这是可以完成的,但是我无法弄清楚如何去做。
这不是什么-i选项是什么?
sed -i -e 's/foo/bar/' foo.txt
如果你提供了-i的参数,它会为你做一个备份。