c - 如何比较太相似的文件
问题描述
我有两个这样的文本文件:
行就像 => SITE.MACHINE.VARIABLE_NAME=VARIABLE_VALUE
CPM-NOMINAL.WAC12.CHRONO_SANSREPONSE_KEEPALIVE=0
CPM-NOMINAL.WAC13.CHRONO_SANSREPONSE_KEEPALIVE=0
DEMO-WEB.WAC7.XN_TCP_SERVICE_PDD_PORT=32099
...
他们已经排序 -u
我必须找出哪些行在一个文件或另一个文件中或已被修改(我不关心常见的),例如sdiff命令。但是这些文件的行太相似了,会产生差异错误。
我正在考虑“=”左侧的差异,如果可以,请检查右侧。我正在寻找一种可以打印 sdiff 之类的输出的解决方案。
输出想要的例子:
File1 | File2
CPM-NOMINAL.WAC10.SAR_PARI_SUJET_A_COTES="1:0:1:1:0:0:0:0:0" | CPM-NOMINAL.WAC10.SAR_PARI_SUJET_A_COTES="1:0:1:1:0:0:0:1:0"
CPM-NOMINAL.WAC12.CHRONO_SANSREPONSE_KEEPALIVE=1 | CPM-NOMINAL.WAC12.CHRONO_SANSREPONSE_KEEPALIVE=0
CPM-NOMINAL.WAC12.PARIS_SANSREPONSE_KEEPALIVE=1 | CPM-NOMINAL.WAC12.PARIS_SANSREPONSE_KEEPALIVE=0
CPM-NOMINAL.WAC12.PARIS_SANS_EMISSION_KEEPALIVE=1 | CPM-NOMINAL.WAC12.PARIS_SANS_EMISSION_KEEPALIVE=0
CPM-NOMINAL.WAC12.PROTOCOLE_PDD=2 | CPM-NOMINAL.WAC12.PROTOCOLE_PDD=3
> CPM-NOMINAL.WAC7.SQL_PROC_INIT_XAPDD_MBN_TEST="p_initialiser"
CPM-NOMINAL.WAC8.FAIRE_VERIF_CHAINAGE=FALSE | CPM-NOMINAL.WAC8.FAIRE_VERIF_CHAINAGE=TRUE
DEMO-WEB.WAC7.XN_TCP_SERVICE_PDD_PORT=3201 | DEMO-WEB.WAC7.XN_TCP_SERVICE_PDD_PORT=32099
DEMO-WEB.WAC7.XN_TCP_SERVICE_SAR_PORT=3201 | DEMO-WEB.WAC7.XN_TCP_SERVICE_SAR_PORT=3204
谢谢你。
解决方案
这样的事情可以用join
$ join -a1 -a2 -e"---" -t= -o1.1,1.2,2.2,2.1 file1 file2 | column -ts=
CPM-NOMINAL.WAC10.SAR_PARI_SUJET_A_COTES "1:0:1:1:0:0:0:0:0" "1:0:1:1:0:0:0:1:0" CPM-NOMINAL.WAC10.SAR_PARI_SUJET_A_COTES
CPM-NOMINAL.WAC12.CHRONO_SANSREPONSE_KEEPALIVE 1 0 CPM-NOMINAL.WAC12.CHRONO_SANSREPONSE_KEEPALIVE
CPM-NOMINAL.WAC12.PARIS_SANSREPONSE_KEEPALIVE 1 0 CPM-NOMINAL.WAC12.PARIS_SANSREPONSE_KEEPALIVE
CPM-NOMINAL.WAC12.PARIS_SANS_EMISSION_KEEPALIVE 1 0 CPM-NOMINAL.WAC12.PARIS_SANS_EMISSION_KEEPALIVE
CPM-NOMINAL.WAC12.PROTOCOLE_PDD 2 3 CPM-NOMINAL.WAC12.PROTOCOLE_PDD
--- --- "p_initialiser" CPM-NOMINAL.WAC7.SQL_PROC_INIT_XAPDD_MBN_TEST
CPM-NOMINAL.WAC8.FAIRE_VERIF_CHAINAGE FALSE TRUE CPM-NOMINAL.WAC8.FAIRE_VERIF_CHAINAGE
DEMO-WEB.WAC7.XN_TCP_SERVICE_PDD_PORT 3201 32099 DEMO-WEB.WAC7.XN_TCP_SERVICE_PDD_PORT
DEMO-WEB.WAC7.XN_TCP_SERVICE_SAR_PORT 3201 3204 DEMO-WEB.WAC7.XN_TCP_SERVICE_SAR_PORT
通用值可以通过管道消除awk '$2!=$3'
推荐阅读
- php - PHP - 为什么回声打印它像零?
- php - 如何显示来自不同数据表的数据?一对多关系
- selenium - NightwatchJS 在本地 selenium 网格上设置
- javascript - 如何在 Node.js 中声明一个静态数组?
- python - 如何将接受的套接字从父进程传递到其子进程?
- java - Java Spring中用户'root'@'localhost'的访问被拒绝
- python - 如何填充旋转曲线和 2 条水平线之间的区域?
- css - svg 剪辑路径 对角线 翻译
- python - 用于连接 PySide2 中的按钮的 for 循环将所有连接设置为最后一个值
- angular - Angular Material Checkbox 不代表单向绑定值