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

Fol*_*aht 70 sed io-redirection

> 可以做到。

echo "text" > file
Run Code Online (Sandbox Code Playgroud)

tee 可以做到。

echo "test" | tee file 
Run Code Online (Sandbox Code Playgroud)

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

ank*_*mon 98

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

另一方面,sed 是一个流编辑器。sed 并不像 tee 和 > 那样用于数据重定向。但是,您可以使用命令的组合来做到这一点。

使用 tee 或 > 与 sed

sed 's/Hello/Hi/g' file-name | tee file
Run Code Online (Sandbox Code Playgroud)

或者

sed 's/Hello/Hi/g' file-name > file
Run Code Online (Sandbox Code Playgroud)

使用带有 -i 选项的 sed

sed -i 's/Hello/Hi/g' file-name
Run Code Online (Sandbox Code Playgroud)

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

  • 谢谢。你明白我的问题。所以答案是否定的。我认为 `sed` 自己可能可以做到,因为它也能够使用 `-i.bak` 选项创建备份文件。 (2认同)
  • 正确的。-i.bak 也不是固定选项,您可以使用任何您希望备份文件具有的扩展名。例如。-i.log 也可以工作。:) (2认同)

Jig*_*aga 12

sedw可能做你需要的命令:

文件名

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

sed 'w file'其本身将具有与tee file. 如果还有其他sed命令,放w最后一个:

sed 's/This/That/;w file'
Run Code Online (Sandbox Code Playgroud)

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