sed 可以将其输出保存到文件中吗?

sed 可以将其输出保存到文件中吗?

>可以做到。

echo "text" > file

tee可以做到。

echo "test" | tee file 

sed不使用上述任何一个也能做到吗?是否可以在不使用或 的情况下将sed命令的输出保存到文件中?>tee

答案1

tee 和 > 可用于数据重定向,因为它们旨在用于 Linux 中的数据重定向。

另一方面,sed 是一个流编辑器。 sed 并不像 tee 和 > 那样用于数据重定向。但是,您可以使用命令的结合来执行此操作。

将 tee 或 > 与 sed 一起使用

sed 's/Hello/Hi/g' file-name | tee file

或者

sed 's/Hello/Hi/g' file-name > file

将 sed 与 -i 选项一起使用

sed -i 's/Hello/Hi/g' file-name

最后一个不会重定向,而是会对文件本身进行更改。

答案2

sed有一个w命令可以满足您的要求:

w 文件名

将当前模式空间写入文件名。

sed 'w file'其本身将具有与 相同的效果tee file。如果还有其他 sed 命令,则放在w最后:

sed 's/This/That/;w file'

但是,这不会受到该-n/--quiet/--silent选项的影响。这只会抑制原本会进入标准输出的内容。

答案3

正如 ankidaemon 正确指出的那样,我们如何将 sed 输出保存到文件中。我想补充一点,如果我们正在对文件执行某些操作(即替换)并且希望将输出保存到同一文件中。有一个-i标志sed可以使就地编辑成为可能。但是,如果提供后缀作为参数,则会在此过程中创建备份文件。如果不需要,可以通过仅传递空文件名或不进行-i标记来完成。

示例:sed -i "s/from/to/" file就地更改file.

相关内容