>
可以做到。
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
.