各コマンドで印刷された行数を自動的に計算する方法は?

各コマンドで印刷された行数を自動的に計算する方法は?

各コマンドで印刷された行数を自動的に計算する方法は?

例:

$ 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に行がゼロの場合、上記のコードブロックが正しく機能しないため、頭部に空の行を追加してください。
  • catnヘッダーに行番号を追加するオプションを持つコマンド
  • tac標準入力を反転させるコマンド
  • whileループから反転した最初の行番号とstdinを印刷します。
  • 最後に、期待される出力をtac再印刷します。tail -n +2
  • などls -1に置き換えることもできますecho xxx> t0.txt

おすすめ記事