如何自动统计每个命令打印的行数?

如何自动统计每个命令打印的行数?

如何自动统计每个命令打印的行数?

例子:

$ echo xxx
xxx
1

$ ls -1
xxx
yyy
zzz
3

$ > t0.txt
0

etc.

即如何正确添加| wc -l.bashrc

答案1

使用 Bash 组合多个命令:

ls -1 \
    | cat <(echo) - \
    | cat -n \
    | tac \
    | cat -n \
    | while read i n line; do
        if [[ $i == 1 ]]; then
            echo $((n - 1))
        fi
        echo $line
    done \
    | tac \
    | tail -n +2

输出:

xxx
yyy
zzz
3
  • cat <(echo) -在头部添加一个空行,因为如果 stdin 为零行,上面的代码块将无法正常工作
  • cat带选项的命令n将行号添加到头部
  • tac命令反转标准输入
  • while循环中,打印反转的第一行号和标准输入
  • 最后,tac再次tail -n +2打印预期的输出
  • 它也可以ls -1echo xxx,> t0.txt等替换。

相关内容