差异两个文件并保持新的或更改的行

por*_*ast 9 bash diff file

我想编写一个bash脚本或一些shell命令来解决我的问题.我有两个文件,old.txt,new.txt.我想生成一个文件diff.txt,它只包含已更改或新增的行.例如,如果我有:

old.txt:

Sierra
Tango
Oscar
Victor
Whiskey
Yankee
Run Code Online (Sandbox Code Playgroud)

new.txt:

Sierra
Tango
Echo
Osc__ar
Victor
Uniform
Whiskey
Yan__kee
Run Code Online (Sandbox Code Playgroud)

我想要一个看起来像这样的diff.txt:

Echo
Osc__ar
Uniform
Yan__kee
Run Code Online (Sandbox Code Playgroud)

为了透视,我正在编写此脚本以帮助我创建差分Motorolla S2记录,以便通过串行端口将程序加载到嵌入式计算机.我知道bash相当不错,我只是不知道从哪里开始.

chr*_*ock 16

$ grep -v -f old.txt new.txt
Echo
Osc__ar
Uniform
Yan__kee
Run Code Online (Sandbox Code Playgroud)

  • 您还可以对 grep 使用“-F”标志 - 它可以忽略任何正则表达式,因此斜杠/点等将被视为纯文本。总共你会得到'grep -F -v -f old.txt new.txt' (2认同)

kev*_*kev 9

$ awk 'FNR==NR{old[$0];next};!($0 in old)' old.txt new.txt
Echo
Osc__ar
Uniform
Yan__kee
Run Code Online (Sandbox Code Playgroud)