新しいファイルからファイルの古いコピーの内容を削除するには?
たとえば、
メールファイルが与えられたら、メールファイルのコピーを作成し、コピーを処理します。作業中、元のメールファイルのサイズが大きくなります。新しいファイルから古いファイルに保存されている古いメッセージを削除する方法。
行数を数えて新しいファイルの先頭から削除できますか? bashで簡単にできる方法はありますか?
ありがとうございます。
ベストアンサー1
ファイルが同じ形式であると仮定すると(Linuxでは大文字を含める必要があります)(たとえば、1行に1つの電子メールアドレスなど)、必要なcomm
操作が実行されます。
$ cat old <(echo '--') new
[email protected]
[email protected]
[email protected]
[email protected]
--
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
$ comm -i13 <(sort old) <(sort new)
[email protected]
[email protected]
[email protected]
オプションは、()にのみアドレスを表示せず、両方のファイルが()にアドレスを表示しないように指示します-13
。したがって、出力には見つかったアドレスのみが表示されます。comm
old
-1
-3
ただ存在するnew
。
BSDを使用していてファイルがまだ大文字と小文字の両方で正規化されていない場合は、スイッチを追加して大文字と小文字をcomm
区別しない一致を実行できます。-i