Linux diff与patch的深入分析
Linux diff与patch的深入分析
http://blog.csdn.net/vrix/archive/2009/08/25/4483906.aspx
diff的输出格式分为传统格式和统一格式
1)diff的传统格式输出.
############################################
cat before.txt
输出:
This is a line to be deleted
This is a line that will be changed
This is a line that will be unchanged
cat after.txt
输出:
This is a line that has been changed
This is a line that will be unchanged
This is a line that has been added
############################################
diff before.txt after.txt
输 出:
1,2c1
< This is a line to be deleted
< This is a line that will be changed
---
> This is a line that has been changed
3a3
> This is a line that has been added
############################################
注释:
传统格式的输出
1,2c1是指替换第1个文件的第1,2行到第2个文件的第2行,这里的1,2是指第1个文件的第1,2行,c是替换的意思,最后的1是第2个文件的第1行
<号是指第1个文件更改或删除的行
---号是分割两个文件
>号是第2个文件中增加或删除的行
3a3是指将第2个文件的第3行插入到第一个文件的第3行
也就是说第1个文件的:
< This is a line to be deleted
< This is a line that will be changed
被替换成第2个文件的:
> This is a line that has been changed
由于第1个文件的第3行和第2个文件的第2行一致,所以不做修改.
由于第2个文件的第3行是第1个文件所不具有的,所以在第1个文件的最后一行增加:
> This is a line that has been added
2)patch命令的应用
用diff的传统格式输出:
#################################
diff before.txt after.txt >mypatch.txt
#################################
用patch修补before.txt文件,使before.txt和after.txt一致.
#################################
cat mypatch.txt |patch before.txt
输出:
patching file before.txt
#################################
比较两个文件,现在是一致的了.
#################################
cmp before.txt after.txt
#################################
用patch命令恢复before.txt.
#################################
patch -R before.txt <mypatch.txt
输出:
patching file before.txt
相关文档:
Linux环境进程间通信(五):
共享内存(上)
文档选项
<tr
valign="top"><td width="8"><img alt="" height="1" width="8"
src="//www.ibm.com/i/c.gif"/></td><td width="16"><img alt="" wid ......
Linux 环境进程间通信(六)
套接口
文档选项
<tr
valign="top"><td width="8"><img alt="" height="1" width="8"
src="//www.ibm.com/i/c.gif"/></td><td width="16"><img alt="" width=" ......
1、class的定义一定要在后面加“;”
2、用cout时要在main函数前加 using namespace std;
3、出现 undefined reference to `std::ios_base::Init::Init() 提示的话,问题是gcc编译器出现的,解决的办法是:在linux下编译c++ 程序要使用g++ 编译器,如果你要是使用gcc编译器就会有上面的报错信息,只要在在gcc后加 ......
1. Linus和Bill
似乎在一夜之间,这个名字突然变得同象比尔。盖茨一样的耳熟能详。但是比尔。盖茨,
哪怕身价有数不清倍的百万美金,也永远不会变成Linux Torvalds。这位29岁的芬兰人,
简单而强大的Linux操作系统的创造者,超越了盖茨的神话。也有传闻说盖茨是一个
卓越的程序员,但Linus是货真价实的高手。还在大学里 ......