あるコマンドから別の2つのコマンドへのパイプ出力

あるコマンドから別の2つのコマンドへのパイプ出力

あるコマンドの出力を別の2つのコマンドにパイプする必要があります。

cat filename.txt | tail -n 1
cat filename.txt | wc -l

ファイルが大きいので、2回読み取ることを避けたいです。コマンドを確認しましたが、tee不要なファイルに出力がリダイレクトされます。関連投稿は多いが、関連内容は見つからなかった。

ベストアンサー1

私が正しく理解した場合は、行番号でファイルの最後の行を取得したいと思います。

$ cat a
aaa
bb
ccc
$
$ awk 'END{print $0; print NR}' a
ccc
3

変数に保存する必要があるため:

$ out=$(awk 'END{print $0"|"NR}' a)
$ last_line=$(echo $out | awk -F"|" '{print $1}' )
$ tot_cnt=$(echo $out | awk -F"|" '{print $2}' )
$ echo $last_line
ccc
$ echo $tot_cnt
3

おすすめ記事