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方法的两倍。(我将dd100mb /dev/urandom写入文件,然后通过每种方法多次运行该文件)
您可以在stderr上克隆stdout。
program | tee /dev/stderr | wc -l
这样,program就tee可以将的stdout通过管道传输到stderr,后者将打印在控制台上。tee还将通过管道传输到其的数据写入通过管道传输到的标准输出wc。
STDOUT_WRITE_COUNT末尾读取该值(例如),或在程序末尾将其记录到文件/ API中。WDYT?