有谁知道sed -i的实现?

问题描述:

当我用-i选项(替换文件)对非常大的文件执行sed时,有什么方法可以知道如何处理目标文件。 例如在/ tmp中创建中间文件,或在内存中处理并交换等。有谁知道sed -i的实现?

+1

'sed -i'创建一个临时文件并在完成时将其移动到原始文件上。如果你想真正修改文件,可以试试'ed'而不是 –

+3

你也可以[查看源代码](http://git.savannah.gnu.org/cgit/sed.git/tree/sed),或者使用像[strace](https://en.wikipedia.org/wiki/Strace)这样的工具来查看该工具正在做什么。 – larsks

+0

我正在投票结束这个问题,因为这与编程无关。 – edmz

strace表明即使是小文件也读取原始文件,结果写入临时文件,然后重命名为原始文件的名称文件。 所以我会假设这是大文件的相同行为:将创建一个临时文件。