매우 유사한 두 개의 "축소된" JavaScript 파일을 비교해야 합니다. 최소화는 무엇보다도 컴퓨터 해석에 필요하지 않은 줄 바꿈 및 공백 문자가 제거됨을 의미합니다. 따라서 파일의 최대 행 수는 >400000자입니다. 나는 이러한 파일을 유지 관리하지 않으며 최소화 방법을 변경할 수 없습니다.
이러한 매우 유사한 파일 간의 차이점을 어떻게 diff
표시하고 변경/추가된 단어만 표시할 수 있습니까(아마도 10자의 문맥 포함)?
환경:
이것은 서버에 있으므로 비교할 특수 도구나 소프트웨어를 설치할 수 없으며 표준 "온보드" 도구를 사용해야 합니다. CentOS 서버이므로 gawk
POSIX/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'
다른 도구를 사용하여 더 좋고 읽기 쉬운 스크립트를 얻으려면(예를 들어 변수 이름 패킹은 실행 취소할 수 없습니다) 몇 가지 옵션이 있습니다.여기.