diff -e 命令计算差异

diff -e 命令计算差异

在HTTP的实例操控(instance manipulation)中,为了避免了把微小变化的文档重复通过网络发送给客户端,可以使用差异算法,将改变的部分发送给客户端,然后客户端将差异应用到已有版本的文档中,从而得到最新版本,具体算法需要通过A-IM,IM首部控制,其中一个差异算法就是diffe,代表的是使用Unix的diff -e命令。这里记录下该命令的用法。

基本介绍

diff -e file1 file2 产生了一系列ed命令,表征的是如何把file1转化为file2。ed是一个基于文本行的编辑器。在IM中,如果使用diffe差异算法,那么服务器发给客户端的改变部分就是ed命令,客户端收到后,应用这些ed命令就可以得到最新实例。

1
2
3
4
5
diff - compare files line by line
-e, --ed
output an ed script

ed - line-oriented text editor

举例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
vonzhou@ubuntu:~/Workspace$ cat hellov1.0.txt 
hello vonzhou
Luna
Http Https
vonzhou@ubuntu:~/Workspace$ cat hellov1.1.txt
hello vonzhou
I change this line
Http Https
I add this line, changed
vonzhou@ubuntu:~/Workspace$ cat hellov1.2.txt
hello vonzhou
Http Https
vonzhou@ubuntu:~/Workspace$ diff -e hellov1.0.txt hellov1.1.txt
3a
I add this line, changed
.
2c
I change this line
.
vonzhou@ubuntu:~/Workspace$ diff -e hellov1.0.txt hellov1.2.txt
2d
vonzhou@ubuntu:~/Workspace$ ed hellov1.0.txt
30
2d
P
*wq
25
vonzhou@ubuntu:~/Workspace$ diff -e hellov1.0.txt hellov1.2.txt
vonzhou@ubuntu:~/Workspace$

note: Ubuntu上的ed man page不够完善,OSX上比较详细