ソートは「sed --in-place」などのファイルソートをサポートしていますか?

ソートは「sed --in-place」などのファイルソートをサポートしていますか?

--in-place私は視覚障害者ですか、それと同じオプションはありませんかsort

結果を入力ファイルに保存するには、sedは-i--in-place)を使用します。

sort出力を入力ファイルにリダイレクトする

sort < f > f

その結果、空になります。オプションがない場合--in-place- これを行うためのいくつかのトリックがあるかもしれません。便利どのように?

(私の心の中に浮かぶ唯一のことは:

sort < f > /tmp/f$$ ; cat /tmp/f$$ > f ; rm /tmp/f$$

移動するのは正しい選択ではありません。ファイル権限変更されることがあります。そのため、一時ファイルの内容で上書きして削除します。 )

ベストアンサー1

sortファイル名を引数として使用する-o(または)オプションがあります。--outputプログラムはデータを一時ファイルに書き込み、ソートが完了した後に元の入力ファイルを上書きします(これはすべての入力データを読み取った後にのみ発生します)。 (これは本質的にdoneと同じですsed -i。)

GNU sort情報ページから:

    -o OUTPUT-FILE
    --output=OUTPUT-FILE
      出力書き込み結果ファイル標準出力の代わりに。通常、 sort開く前にすべての入力を読みます。結果ファイルsort -o F F したがって、同じコマンドを使用してファイルを安全に並べ替えることができますcat F | sort -o F。ただし、()をsort使用すると、すべての入力を読み取る前に出力ファイルを開くことができるため、このコマンドは読み取りが完了する前に書き込みが開始されるため安全ではありません。--merge-mcat F | sort -m -o F - GsortFcat

      最新のシステムでは、設定されている場合は-o入力ファイルの後に表示できません。たとえば、移植可能なスクリプトは入力ファイルの前に指定する必要があります。POSIXLY_CORRECTsort F -o F-o OUTPUT-FILE

そしてからOpen Group基本仕様7号:

    -o output
      標準出力の代わりに使用する出力ファイルの名前を指定します。このファイルは入力ファイルの1つと同じにすることができます。
sortディスク容量やディスククォータが不足したり、出力ファイルの書き込み中にシステムがクラッシュしたり、その他のエラーが発生した場合、sortデータの一部または全部が削除(破棄)される可能性があるという報告があります。

つまり、ファイルを所定の位置にソートするには、次のコマンドを使用できます。

sort -o filename filename

おすすめ記事