git diff 比较文件_linux 命令-文本比较comm、diff、patch

本文原创首发于公众号:编程三分钟

今天学了三个文本比较的命令分享给大家。

comm

comm 命令比较相同的文本

$ cat charabc$ cat chardiffadc

比如,我有两个文件char和chardiff如上,略有不同,就可以用这个命令输出。

$ comm char chardiff abc d c

如上,看起来输出的乱七八糟,他只是把两个文件按列把各自特有的输出,最后再输出共有的。所以参数-1代表不输出第1列,也就是第2列和第3列。-2输出第1列和第3列,-3输出第1、2列的。参数比较废,看起来很费劲。

$ comm -1 char chardiff adc$ comm -12 char chardiffa

comm命令比较笨,只能针对已经排序过的数据,如果没有排序过,像abc和acb就会识别成仅仅a相同,暂时没想到比较好的使用场景。

diff

用到git的都知道git diff有多好用,虽然不如可视化页面直观,意在快速便捷。下面是一个例子,char文件内容是abc,chardiff2内容是bcd

$ diff -c char chardiff2*** char 2019-09-16 21:40:47.000000000 +0800--- chardiff2 2019-09-17 00:38:52.000000000 +0800****************** 1,3 ****- a b c--- 1,3 ---- b c+ d

直接加了-c参数是为了更直观,感兴趣可以自己尝试去掉-c看看是什么效果。*** 1,3 ****和--- 1,3 ----代表1到3行,-代表删除行,+代表增加行,!代表更改行。diff不仅可以临时对比两个文件之间的差异,但是和下一个命令组合起来才是其真正的用处。

patch 补丁

通常在更新几百万行的项目时,如果只有几行有变化,全部打包过来根本是不可能的,因为它太大了,而且全部拷过来也没有意义,最大的问题是人力难以对比。在这之前我们需要生成一个补丁文件

$ diff -Naur folder1 folder2 > diff_file$ ls folder1char chardiff$ ls folder2char chardiff ip

得到补丁文件diff_file之后,发到与foler1版本一模一样的位置就可以更新成功了!

$ cd folder1$ patch < diff_file$ patch < diff_filepatching file chardiffpatching file ip

如果要回滚就加-R参数

$ patch -R < diff_filepatching file chardiffpatching file ip

它的参数如下-p num :忽略几层文件夹-E :如果发现了空文件,那么就删除它-R :取消打过的补丁

f4d32b11d65fc8e3f58dc8ecb5cc9d4b.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值