--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
-m
cat F | sort -m -o F - G
sort
F
cat
最新のシステムでは、設定されている場合は-o
入力ファイルの後に表示できません。たとえば、移植可能なスクリプトは入力ファイルの前に指定する必要があります。POSIXLY_CORRECT
sort F -o F
-o OUTPUT-FILE
-o output
-
標準出力の代わりに使用する出力ファイルの名前を指定します。このファイルは入力ファイルの1つと同じにすることができます。
sort
ディスク容量やディスククォータが不足したり、出力ファイルの書き込み中にシステムがクラッシュしたり、その他のエラーが発生した場合、sort
データの一部または全部が削除(破棄)される可能性があるという報告があります。
つまり、ファイルを所定の位置にソートするには、次のコマンドを使用できます。
sort -o filename filename