比較とマージ

比較とマージ

file1.txtとfile2.txtという2つのファイルがあります。

File1.txt には次の内容が含まれています。

SDGIQEGFLDCAJNHCKJHGAIUFCHLKQAJDCGQYFHCLKAH
`1531280O94E1-09E4=1-203E]O12-9E81098ER13
kjsghdjigqiugtfdiasjclkkahfoiuqhfok;jasdl
shdashlkcdkdalfjvhadjfk;asljkfcjda;kflkdjf
kahfdahfkadlkfkl;adj;fljad;hf;jda;fkdfljaklfh

File2.txt には次の内容が含まれています。

SDGIQEGFLDCAJNHCKJHGAIUFCHLKQAJDCGQYFHCLKAH
`1531280O94E1-09E4=1-203E]O12-9E81098ER13
kjsghdjigqiugtfdiasjclkkahfoiuqhfok;jasdl

file1.txtとfile2.txtを1行ずつ比較し、違いが見つかった場合は、その行をfile2.txt自体に追加したいと思います。

期待される出力

File2.txt は次のようになります。

SDGIQEGFLDCAJNHCKJHGAIUFCHLKQAJDCGQYFHCLKAH
`1531280O94E1-09E4=1-203E]O12-9E81098ER13
kjsghdjigqiugtfdiasjclkkahfoiuqhfok;jasdl
shdashlkcdkdalfjvhadjfk;asljkfcjda;kflkdjf
kahfdahfkadlkfkl;adj;fljad;hf;jda;fkdfljaklfh

注:すべての内容ではなく、file1.txtの違いのみをマージしたいと思います。

シェルスクリプトを使用してこれを実行できますか?

答え1

の末尾にのみ追加するには、にあるがにない行を抽出しfile2.txtてに追加するだけです。file1file2file2

comm -23 file1.txt file2.txt >> file2.txt

答え2

簡単なjoinコマンド:

join -a1 --nocheck-order file1.txt file2.txt
  • a FILENUM- ファイルからペアリングできない行も印刷します。FILENUM

出力:

SDGIQEGFLDCAJNHCKJHGAIUFCHLKQAJDCGQYFHCLKAH
`1531280O94E1-09E4=1-203E]O12-9E81098ER13
kjsghdjigqiugtfdiasjclkkahfoiuqhfok;jasdl
shdashlkcdkdalfjvhadjfk;asljkfcjda;kflkdjf
kahfdahfkadlkfkl;adj;fljad;hf;jda;fkdfljaklfh

答え3

最初のテスト:

{ cat file2; grep -Fxvf file2 file1; }
SDGIQEGFLDCAJNHCKJHGAIUFCHLKQAJDCGQYFHCLKAH
`1531280O94E1-09E4=1-203E]O12-9E81098ER13
kjsghdjigqiugtfdiasjclkkahfoiuqhfok;jasdl
shdashlkcdkdalfjvhadjfk;asljkfcjda;kflkdjf
kahfdahfkadlkfkl;adj;fljad;hf;jda;fkdfljaklfh

上記が要件を満たしていることを確認したら、出力をfile2自体にリダイレクトします。

grep -Fxvf file2 file1 >> file2

関連情報