我想编写一个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相当不错,我只是不知道从哪里开始。
答案 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