如何自动统计每个命令打印的行数?
例子:
$ 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 -1
用echo xxx
,> t0.txt
等替换。