比较和合并

比较和合并

我有两个文件 file1.txt 和 file2.txt

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,如果发现差异,则将这些行添加到 file2.txt 本身中。

预期输出

File2.txt 应如下所示

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

注意:我只想合并 file1.txt 的差异而不是所有内容。

有没有可能使用 shell 脚本来做到这一点?

答案1

如果您只想添加到 的末尾file2.txt,则可以提取 in 中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

相关内容