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
てに追加するだけです。file1
file2
file2
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