通过 tee 发送到文件的转换流

transform stream sent to a file by tee

我想将流的标准输出和标准错误重定向到屏幕和文件。为此,我正在使用工具 tee。但是,在该流转到文件之前,我想使用管道对其进行转换。到目前为止,我只成功地转换了进入标准输出的流。

示例:

echo 'hello' | tee output.txt | tr 'h' 'e'

=> 这会将 eello 输出到标准输出并将 hello 保存到 output.txt

但是我想要的是将 hello 打印到标准输出并将 eello 保存到 output.txt。

注意:更改输入流不是解决我的问题的选项。

您可以在单个 awk 中完成,无需多个管道:

echo 'hello' | awk '1; {gsub(/h/, "e"); print > "output.txt"}'

bash:

echo 'hello' | tee >(tr 'h' 'e' > output.txt)

bash 和 Linux:

echo 'hello' | tee /proc/$$/fd/255 | tr 'h' 'e' > output.txt

参见:What is the use of file descriptor 255 in bash process