复制命令输出,将未经 post 处理的副本打印到标准输出并将 post 处理的副本存储到文件中
Duplicate command output, print un-post-treated copy to stdout and store post-treated copy into a file
我正在尝试复制命令的输出,所以我对一个流应用 post 处理,然后将其存储到一个文件中,同时在标准输出上打印原始文件。
我能想到的最接近的是:
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
命令。
我正在尝试复制命令的输出,所以我对一个流应用 post 处理,然后将其存储到一个文件中,同时在标准输出上打印原始文件。
我能想到的最接近的是:
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
命令。