入力「ソート」にパイプを使用する必要がありますか、それともリダイレクトを使用する必要がありますか?

入力「ソート」にパイプを使用する必要がありますか、それともリダイレクトを使用する必要がありますか?

私がしたい

awk -F "," '{print $1 }' inputfile1.txt | sort -u > distinctOutput.txt

パフォーマンス面では大丈夫ですか?それとも、awkが完全な出力ダンプを完了するまでsortを待つ方が良いと思うので、一時ファイルをリダイレクト/使用する必要がありますか?それとも内部的に処理されますか?

(AIX 6.1)

ベストアンサー1

sort一時ファイルは自動的に使用されるようです。記事のさまざまな場所で一時的な従業員が言及されています。manそしてinfo以下を含むページsort:

   --compress-program=PROG
          compress temporaries with PROG; decompress them with PROG -d
   -T, --temporary-directory=DIR
          use  DIR  for temporaries, not $TMPDIR or /tmp; multiple options
          specify multiple directories

環境変数TMPDIRが設定されている場合、sortはその値を/ tmpの代わりに一時ファイルのディレクトリとして使用します。 --temporary-directory(-T) オプションは環境変数をオーバーライドします。


テストするために、以下を実行しました。

base64 < /dev/urandom | sort

メモリ使用量が速く安定しますbase64sorttop -bn1 | grep 'base64|sort'

21877 root      20   0   11.1m   0.6m   0.5m R  63.9  0.0   7:23.46 base64
21878 root      20   0   21.4m   8.2m   0.8m R  31.9  0.4   4:44.15 sort

/tmp通話中に何百もの一時ファイルを表示できますsortXXXXXX

$ ls /tmp/sort* | head
/tmp/sort03IIcQ
/tmp/sort052vXK
/tmp/sort07ZCcO
/tmp/sort09yrTN
/tmp/sort0anX08
/tmp/sort0BruPR
/tmp/sort0EgCYY
/tmp/sort0GsbQs
/tmp/sort0hCMDD
/tmp/sort0hdSMT
$ ls /tmp | grep -c sort
1990

したがって、一時ファイルについて心配する必要はないと言いたいと思いますsort。最善の方法は、一時ファイルの場所が高速ファイルシステム(SSDなどtmpfs)にあることを確認することです。

免責事項:私はGNUソートのみを検討しました。


上記の分析はGNUソートにのみ適用されますが、AIXsortリンクされたマニュアルによれば、一時ファイルも使用されるか、少なくとも一時ファイルのディレクトリが使用されます。これをテストできるAIXシステムはありません。

POSIX一時ファイルへの言及がないため、これは提供されません。

おすすめ記事