各コマンドで印刷された行数を自動的に計算する方法は?
例:
$ 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
ループから反転した最初の行番号とstdinを印刷します。- 最後に、期待される出力を
tac
再印刷します。tail -n +2
- など
ls -1
に置き換えることもできますecho xxx
。> t0.txt