unix – 如何从命令行执行可移植,可读和可管理的逐字符差异?

标准差异工具对于查找不同文件中的行非常有用,但它对于逐个字符的差异不起作用.我经常需要逐个字符地合并文本(即书面文本,而不是代码)在不同的计算机上修改而不同步(是的,我知道我不应该,但无论如何它都会发生).除了添加一个或两个段落之外,我可能更改了逗号,拼写错误或文本中的其他一些小变化,这些变化以前是两个文件共有的.

Diff会告诉我哪些线路被改变了,但由于每条线路可能有多个差异,我必须仔细扫描这些线路以找到每条线路上每个物理上很小但很重要的差异.修复后,我必须重复差异,以确保我没有错过任何编辑.当行格式化(即每段一行),并且当许多连续行具有如此小的差异时,情况变得更糟.

现在我必须承认我通常只将这两个文件加载到Microsoft Word中并使用其内置的diff函数.启动一个像Word这样的大包只是为了找到一些小的差异当然不方便,但至少它在逐个字符的基础上比较文件.

我真正想要的是一种Unix方式.一个小而可爱的工具或脚本,对文本进行逐字符比较,即不基于行,能够忽略行结尾,通过一些明智的ascii-art报告,并且完全可管理以在命令行的脚本中使用?

还有另外一个问题,Using ‘diff’ (or anything else) to get character-level diff between text files,但这个问题是由基于网络的工具所示的lib所满足的,我更喜欢命令行上的东西.

我不确定这是否符合您的“命令行”标准,但我每天都会使用gvim / vim来达到此目的.

>打开你想要差异的文件,如下所示:

gvim -d file1 file2

>使窗口全屏,以便更容易看到
>使用以下命令使gvim内的拆分窗口大小相同:C-w =(那是控制W然后=)
>要更好地查看段落格式化的行,请输入:set wrap,然后使用C-w w(或通过鼠标单击)切换到另一个拆分窗口,并输入:set wrap
>要在更改之间移动,请使用[c和] c.要合并更改,请使用dp(“diff put”)和do(“diff gets / get”).

突出显示具有差异的线条,并且线条内的差异也以另一种颜色突出显示.我希望这能满足您的需求. gvim可以为您做更多事情,例如从一个文件合并到另一个文件.您可以使用以下命令找到更多信息:help diff(inside gvim).

你也可以尝试kdiff3,它可能比学习vim更容易.

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...