bash - 复制命令输出,将未处理后的副本打印到标准输出并将处理后的副本存储到文件中

标签 bash unix pipe tee

<分区>

我试图复制一个命令的输出,所以我对一个流应用后处理,然后将它存储到一个文件中,同时在标准输出上打印原始文件。

我能想到的最接近的是:

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/

相关文章:

regex - 为什么 -name 可以工作,但我无法在 Mac 终端中使用 -regex?

bash - 如何通过管道将 grep 输出粘贴到输入中?

linux - unix/linux 划分两个不同文件包含的行数的方法是什么?

linux - 通过 shebang 线路链接解释器是否可移植?

file - 将多个目录中相同类型的所有文件上移一个文件夹

unix - 更改 UNIX 进程的系统时间?

c# - 匿名管道 - 未获取所有数据

linux 将文件描述符中的数据通过管道传输到 fifo

python - 打印出文件中以字母表中的每个字母开头的单词的第一次出现

c - 保持 ssh 上的管道链打开