首页 > 解决方案 > 只有一个字符的差异

问题描述

我是 ubuntu 和编码的新手。我遇到了问题,因为我有两个包含几乎相同单词的文件。它们仅相差一个字符(我希望如此)。我的输入是这样的文件

文件 1:

AEEL00123-RA
AEEL00123-RB
AEEL00125-RA
(...)

文件 2:

AEEL00123-PA
AEEL00123-PB
AEEL00125-PA
(...)

我需要只显示 Ps 或 Rs 的输出,因为稍后我将计算这些差异并且我的文件每个有 29000 行。我需要确认有 29000 个差异并且它们只是字母 P 或 R

我希望输出是这样的:

P
P
P
P

因为那时我会用 wc -l 或类似的东西来计算它。

标签: ubuntuawkdiff

解决方案


cmp -l file1 file2 |\
awk '
    { count++ }
    !/( 12[02]){2}$/ { print "bogus change at position", $1 }
    END { print count, "total changes" }
'
  • cmp -l比较两个文件并输出任何字节差异
  • 脚本计算awk更改并打印总数;它还会为不是P (120) 或R (122)的任何更改打印一条消息

请注意,如果这两个文件包含任何长度不等的行(即插入或删除而不是替换),您将获得非常详细的输出,因为对齐更改将使几乎每个后续字节都变得不匹配。


推荐阅读