memo

2013-01-10

ファイルの中身を任意のコマンドの標準入力に渡し、その標準出力でファイルを置き換える方法

イメージとしては以下のようなこと。ただし、これだとご存知の通り期待した結果にはならない。

$ sort < data.txt > data.txt

ということで、普通は一時ファイルを作ることになるのだけど、 そうでなく無理やり頑張る方法。

$ ( rm data.txt; sort > data.txt ) < data.txt
$ ex -c '%! sort' -c 'wq' data.txt
$ sort =(< data.txt) > data.txt  # zsh only

... まあ、裏でこっそり一時ファイル作られてたりするのだけど。