使用命令的输出做两件事

使用命令的输出做两件事

我有一个程序texcount可以输出 LaTeX 文档中的字数。我还可以将其输出通过sed管道传递到 TeX 换行符,并将其写入一个文件,然后将其包含在我的最终文档中。但是当我这样做时,texcount foo.tex | sed s/$/'\\\\'/ > wc.tex命令行输出texcount被抑制。

如何获取要在终端中显示的第一个命令的输出通过管道传输到 sed?

答案1

您可以对第二个命令使用匿名管道:

texcount foo.tex | tee >(sed s/$/'\\\\'/ > wc.tex)

答案2

您需要“tee”命令,它允许您分割管道。

texcount foo.tex | tee >output.txt | sed s/$/'\\\\'/ > wc.tex ; cat output.txt

这将为您留下额外的output.txt 文件。阅读本文以获取更多信息:http://www.unixtutorial.org/2007/12/tee-replicate-standard-output/ 你也可以做“man tee”。

答案3

你可以使用相当地道的

texcount foo.tex | tee /dev/tty | sed s/$/'\\\\'/ > wc.tex

/dev/tty是一个神奇的设备,指的是当前进程的控制终端。

相关内容