假设command1正在处理某些内容,我对command1的输出以及输出实际上有多少行感兴趣。如何在UNIX shell中打印输出命令行数
$ command1 | wc - l
打印数量的Command行输出,而
$ command1 | nl
打印类似的东西:
1 ./PaDe014
2 ./PaDe033
3 ./PaDe001
4 ./PaDe013
5 ./PaDe025
6 ./PaDe028
更多的解决方案见How to count lines in a document?。
不过我很感兴趣,产生这样的输出:
./PaDe014
./PaDe033
./PaDe001
./PaDe013
./PaDe025
./PaDe028
Total number of files generated: 6
我有一个模糊的感觉,它可以与tee
和wc
来实现,但无法弄清楚究竟是如何。
实现预期输出的最简单方法是什么?
我也试过:
command1 | tee >(wc -l)
但必须有一个竞争条件在这里,从我不时收到奇怪的结果。这里是测试输出:
[email protected]:~$ (ls -l ; printf "Total: ") | tee -a >(wc -l)
total 56
drwxr-xr-x 7 pdebski pdebski 4096 cze 22 18:50 Data
drwxr-xr-x 2 pdebski pdebski 4096 cze 22 15:14 Desktop
drwxr-xr-x 2 pdebski pdebski 4096 cze 22 14:50 Documents
drwxr-xr-x 2 pdebski pdebski 4096 cze 16 01:09 Downloads
-rw-r--r-- 1 pdebski pdebski 8980 cze 16 01:04 examples.desktop
drwxr-xr-x 4 pdebski pdebski 4096 cze 17 13:44 Music
drwxr-xr-x 2 pdebski pdebski 4096 cze 22 13:14 Pictures
drwxr-xr-x 2 pdebski pdebski 4096 cze 16 01:09 Public
drwxr-xr-x 2 pdebski pdebski 4096 cze 16 01:09 Templates
drwxrwxr-x 2 pdebski pdebski 4096 cze 22 01:21 test
drwxrwxr-x 2 pdebski pdebski 4096 cze 22 01:21 test2
drwxr-xr-x 2 pdebski pdebski 4096 cze 16 01:09 Videos
Total: [email protected]:~$ 13
Dijkstra的信号量和互斥量需求的一个很好的例子,不是吗? (见https://en.wikipedia.org/wiki/Edsger_W._Dijkstra)
显然这里应该有一些wait
。
$ (ls -l && printf "Total: ") | tee -a >(wc -l)
其实这一个工程:'ls -l | awk'1; END {print“总行数:”,NR}“。我仍然想知道如何真正同步三通输出流...... –