bash - 从命令计数和输出行

ste*_*eel 5 bash

我正在编写一个小脚本,需要运行一个输出多行的程序,然后显示这些行的计数.但是,该程序可能需要几秒钟才能运行,我宁愿不运行两次,一次用于输出,另一次用于计数.

我可以两次运行程序:

#!/bin/bash
count=$(program-command | wc -l)
program-command
printf "$count lines"
Run Code Online (Sandbox Code Playgroud)

有没有办法在只运行一次程序的同时获得计数和输出?此输出具有格式,因此理想情况下将保留格式(颜色).

Ben*_*Ben 8

使用tee处理替换:

program-command | tee >(wc -l)
Run Code Online (Sandbox Code Playgroud)

要保留颜色,请script -q /dev/null按照以下答案为命令添加前缀:

script -q /dev/null program-command | tee >(wc -l)
Run Code Online (Sandbox Code Playgroud)


Raz*_*van 5

你可以使用 awk:

program-command | awk '{print $0; count++} END {print count}'
Run Code Online (Sandbox Code Playgroud)