如何比较最小化的 JS 文件和很长的行? diff 打印不可读的整行(每行 400k 个字符)

如何比较最小化的 JS 文件和很长的行? diff 打印不可读的整行(每行 400k 个字符)

我需要比较两个“最小化”的、非常相似的 JavaScript 文件。最小化意味着(除其他外)计算机解释不需要的换行符和空格字符被删除。因此,文件每行的行数最多 >400000 个字符。我不维护这些文件,也无法更改它们被最小化的情况。

我如何diff/显示这些非常相似的文件之间的差异,只显示更改/添加的单词,也许有 10 个字符的上下文?

环境:

这是在服务器上,因此我无法安装特殊工具或软件进行比较,我们需要使用标准的“板载”工具。它是一个 CentOS 服务器,所以我们有gawkPOSIX/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'

如果您想使用其他工具并获得更好、更易读的脚本(请注意,例如变量名打包无法撤消),有一些选项这里

相关内容