我需要比较两个“最小化”的、非常相似的 JavaScript 文件。最小化意味着(除其他外)计算机解释不需要的换行符和空格字符被删除。因此,文件每行的行数最多 >400000 个字符。我不维护这些文件,也无法更改它们被最小化的情况。
我如何diff
/显示这些非常相似的文件之间的差异,只显示更改/添加的单词,也许有 10 个字符的上下文?
环境:
这是在服务器上,因此我无法安装特殊工具或软件进行比较,我们需要使用标准的“板载”工具。它是一个 CentOS 服务器,所以我们有gawk
POSIX/GNU 工具等,以及 perl、php 和 python。只是我无法为这个简单的任务安装软件包或克隆大型 git 存储库。
我们的大部分工作都使用tcsh
,因此如果答案可以在没有特定其他 shell 的特殊语法的情况下工作,那就更好了,因为它将使解决方案更容易访问。
答案1
您可以添加一些空格以使其更具可读性diff
。例如,在所有右括号和分号后添加新行。这对你来说可能就足够了。执行此操作的快速而肮脏的sed
行可能是:sed 's/\([;}]\)/\1\n/g'
.
因此,例如,对于 cloudflare.com 上托管的 jquery 缩小版本:
curl https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js | sed 's/\([;}]\)/\1\n/g'
如果您想使用其他工具并获得更好、更易读的脚本(请注意,例如变量名打包无法撤消),有一些选项这里。