我有两个文件 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