Answers:
您可以像平常一样使用tee
拆分输出流,将一个副本发送到另一副本,wc
并将另一个副本发送到STDOUT。
program | tee >(wc -l)
的>(cmd)
是bash的语法该装置运行cmd
和替换>(cmd)
用的路径(连接到一个命名管道),该程序的STDIN位。
>(cmd)
是ksh
语法也可以被zsh
和识别,并且bash
仅在没有语法的系统上使用命名管道/dev/fd/n
。
bash
发明,因为您回答中的措辞可能让人相信。
sed
和as awk
只是一个。但是tee
和wc
都非常小(比sed
和小得多awk
)。
sed
和awk
方法的两倍。(我将dd
100mb /dev/urandom
写入文件,然后通过每种方法多次运行该文件)
您可以在stderr上克隆stdout。
program | tee /dev/stderr | wc -l
这样,program
就tee
可以将的stdout通过管道传输到stderr,后者将打印在控制台上。tee
还将通过管道传输到其的数据写入通过管道传输到的标准输出wc
。
STDOUT_WRITE_COUNT
末尾读取该值(例如),或在程序末尾将其记录到文件/ API中。WDYT?