通过 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
我想将流的标准输出和标准错误重定向到屏幕和文件。为此,我正在使用工具 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