11 GBの単語リストテキストファイルから特定の行と重複エントリを削除します。

11 GBの単語リストテキストファイルから特定の行と重複エントリを削除します。

11GB各単語が1行にあるため、ソートされた単語リストファイルがあります。

最初から重複した項目と行を削除する必要があります077

一緒に実行する必要があると思いますsedが、可能であればリアルタイム出力も表示したいとsort -u思います。display what's happening in terminaltime left

これらはすべて1つのコマンドで構成されており、インストールLive CD可能またはインストール可能である必要がありますBacktrack 5 rc3

時間はそれほど重要ではありませんが、ETAを計算する方法があれば、父親のi7ベースのCPUを借りることができます。これは明らかに速くなければならず、そうでなければ古いCore 2 CPUを使用する必要があります。

コマンドの使用中に直面する問題sortは、VMwareライブで実行されているプレーヤーの下にスペースが不足しているため、コマンドを使用して32GBUSBに一時ファイルを割り当てる必要があることです-T。 Linuxをインストールした場合は問題にならないようです。

ですから、sedこのことができる完全な命令を私に与えてください。sortawk(whichever is most optimal)

答え1

開発のためにpv。テキストのみを削除するため、一時ファイルは必要ありません。ファイルを上書きしてください。ファイルがすでにソートされている場合は、必要ではなくsort -u単にソートされますuniq

pv file | {
  uniq | grep -v '^077'
  perl -e 'truncate STDOUT, tell STDOUT'
} 1<> file

grepPerl行は書き込みが終わるとファイルを切り捨てます。

ファイルを正しい場所に書き込むので、間違えれば元に戻せないことに注意してください。

答え2

sed/awk/shell スクリプトの複雑さを大幅に増やさず(したがって全体のプロセス速度を遅くせず)、ETAや進行状況を表示できるかどうかはわかりません。できるだけ早くしたい場合はお試しくださいcat source_file | uniq | sed -n -e '/^077/!p' > dest_file。おおよその進行状況を表示するには、dest_fileバックグラウンドまたは他の端末でコマンドを実行して、コマンドのサイズが大きくなることを確認できます。

答え3

awk '!a[$0]++' "filename" > /tmp/dup
mv -f /tmp/dup "filename"

関連情報