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

时间:2012-03-01 02:32:53

标签: file bash diff

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

old.txt:

Sierra
Tango
Oscar
Victor
Whiskey
Yankee

new.txt:

Sierra
Tango
Echo
Osc__ar
Victor
Uniform
Whiskey
Yan__kee

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

Echo
Osc__ar
Uniform
Yan__kee

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

3 个答案:

答案 0 :(得分:16)

$ grep -v -f old.txt new.txt
Echo
Osc__ar
Uniform
Yan__kee

答案 1 :(得分:9)

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

答案 2 :(得分:1)

以下是使用diff

的新行和更改行的方法
$ cat file.txt file2.txt 
line 1
line 2
line 3
line 4
line 5
line 5
$ cat file2.txt 
line 1
line 2
line 3
line 4b
line 5
line 6

$  diff --changed-group-format='***%>' --unchanged-group-format='' --new-group-format='+++%>' file.txt file2.txt
***line 4b
+++line 6