awk で tac

awk も 1 行で tac を作ることができます。tac とは cat コマンドの逆の綴りであることから分かるように逆順で表示してくれるものです。

$ seq 10 | tac
10
9
8
7
6
5
4
3
2
1

これを awk で行うと、以下のようになります。

$ seq 10 | awk '{a[NR]=$0}END{for(i=NR;i>0;i--)print a[i]}'
10
9
8
7
6
5
4
3
2
1

awk で行う場合には、連想配列に挿入するため、結果的にファイル (この場合、標準入力) を全てメモリに展開する必要があり、その連想配列を呼び出すため、非常に非効率です。

tag_nawk.pngtag_nawk.pngtag_nawk.pngtag_nawk.png