我正在编写一个小脚本,需要运行一个输出多行的程序,然后显示这些行的计数.但是,该程序可能需要几秒钟才能运行,我宁愿不运行两次,一次用于输出,另一次用于计数.
我可以两次运行程序:
#!/bin/bash
count=$(program-command | wc -l)
program-command
printf "$count lines"
Run Code Online (Sandbox Code Playgroud)
有没有办法在只运行一次程序的同时获得计数和输出?此输出具有格式,因此理想情况下将保留格式(颜色).
使用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)
你可以使用 awk:
program-command | awk '{print $0; count++} END {print count}'
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2880 次 |
最近记录: |