最小化されたJSファイルを非常に長い行と比較するには? diffは読み取れない行全体を印刷します(1行あたり400,000文字)。

最小化されたJSファイルを非常に長い行と比較するには? diffは読み取れない行全体を印刷します(1行あたり400,000文字)。

非常によく似た2つの「縮小された」JavaScriptファイルを比較する必要があります。最小化は、とりわけ、コンピュータの解釈に不要な改行や空白文字が削除されることを意味します。したがって、ファイルの最大行数は> 400000文字です。私はこれらのファイルを維持しておらず、最小化方法を変更することはできません。

これらの非常に類似したファイル間の違いをどのようにdiff表示し、変更/追加された単語のみを表示できますか(おそらく10文字の文脈を含む)?

環境:

これはサーバー上にあるため、比較する特別なツールやソフトウェアをインストールすることはできず、標準の「オンボード」ツールを使用する必要があります。 CentOSサーバーなので、gawkPOSIX/GNUツールなどはもちろん、Perl、php、Pythonもあります。ただ、この簡単な作業のためにパッケージをインストールしたり、大規模なgitリポジトリを複製することはできません。

私たちの仕事のほとんどはを使用しているので、tcsh他のシェルに固有の特別な構文なしで答えが機能できる場合は、解決策にアクセスしやすくなります。

答え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'

他のツールを使用してよりよく読みやすいスクリプトを取得するには(たとえば、変数名のパッキングを元に戻すことはできません)、いくつかのオプションがあります。ここ

関連情報