<分区>
我试图复制一个命令的输出,所以我对一个流应用后处理,然后将它存储到一个文件中,同时在标准输出上打印原始文件。
我能想到的最接近的是:
command | tee /dev/stdout | sed 's/foo/bar/g' > out.txt
这不起作用,因为 >
捕获了两个输出。
如果可能,我想避免使用临时文件。有什么线索吗?
<分区>
我试图复制一个命令的输出,所以我对一个流应用后处理,然后将它存储到一个文件中,同时在标准输出上打印原始文件。
我能想到的最接近的是:
command | tee /dev/stdout | sed 's/foo/bar/g' > out.txt
这不起作用,因为 >
捕获了两个输出。
如果可能,我想避免使用临时文件。有什么线索吗?
最佳答案
尝试
command | tee >(sed 's/foo/bar/g' > out.txt)
参见 ProcessSubstitution - Greg's Wiki >(...)
的解释。简而言之,它会导致 tee
写入一个路径,该路径通过管道将写入的数据作为 sed 's/foo/bar/g' > out.txt
命令的输入。
关于bash - 复制命令输出,将未处理后的副本打印到标准输出并将处理后的副本存储到文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70037544/