diff 출력을 색칠하는 방법? 값은 녹색으로 표시되어야합니다.

유닉스 파일을 조건부로 포맷하고 싶었고 현재 diff명령을 사용하고 있으며 diff명령 출력 텍스트의 형식을 지정할 수 있는지 알고 싶었습니다 .

예:

일치하는 값은 녹색으로 표시되어야합니다.
일치하지 않는 값은 빨간색으로 표시되어야합니다.

나는 두 개의 파일이 있다고 가정 file1file2내 명령입니다 diff file1 file2.

이제 출력에 5 개의 불일치가 포함되어 있다고 가정하면 불일치가 빨간색으로 표시되어야합니다. 유닉스를 사용하여 이것을 달성하는 방법?

요약하자면, “일치하지 않는 값에 대한 diff 명령의 출력에 대해 색상을 빨간색으로 변경하십시오”



답변

diff --color 옵션이 추가되었습니다 GNU diffutils 3.4 (2016-08-08)

이것은 diff대부분의 배포판 에서 기본 구현이며 곧 출시 될 것입니다.

3.5에서는 다음과 같습니다.

와:

diff --color -u \
  <(seq 6 | sed 's/$/ a/') \
  <(seq 8 | grep -Ev '^(2|3)$' | sed 's/$/ a/')

또한 다음과 같이 워드 레벨 diff를 요청 diff-highlight했습니다. [Diffutils-devel] git의 diff-h와 같은 컬러 출력을 생성하는 플래그 추가 | list.gnu.org

커밋 c0fa19fe92da71404f809aafb5f51cfd99b1bee2 (2015 년 3 월)에 추가되었습니다.


답변

GNU에 액세스 diff할 수 있는 경우 추가 도구없이 해당 --X-group-format옵션 을 사용하여 해당 효과를 얻을 수 있습니다.

diff --old-group-format=$'\e[0;31m%<\e[0m' \
     --new-group-format=$'\e[0;31m%>\e[0m' \
     --unchanged-group-format=$'\e[0;32m%=\e[0m' \
     file1 file2

그 용도 ANSI 컬러 이스케이프 코드는 빨강, 녹색하세요 ANSI-C는 인용 액세스 셸에서 \e탈출을.

--old-group-format--new-group-format일치하지 않는 행을 식별하고 사용하는 붉은 색과 색 리셋 코드간에 삽입 %<%>동시에, --unchanged-group-format삽입은 녹색과 리셋 코드 사이의 라인을 일치.

모든 라인에서 중복 색상 이스케이프를 희생시키면서 (etc)를 사용할--old-line-format 수도 있습니다--old-line-format=$'\e[0;31m%L\e[0m' .


답변

시험 colordiff file1 file2

Linux / BSD 배포판으로 colordiff의 가용성

데비안 또는 우분투 (또는 그 파생어)를 실행하는 사용자는 아마도 “apt-get install colordiff”를 사용하여 다운로드하여 설치할 수 있습니다. colordiff는 또한 여러 다른 Linux, UNIX 및 BSD 배포 및 운영 체제 용으로 패키지됩니다.

( http://www.colordiff.org/ 에서 인용 )


답변

컬러, 단어 수준 diff 출력

아래 스크립트와 diff-highlight로 할 수있는 작업은 다음과 같습니다 .

#!/bin/sh -eu

# Use diff-highlight to show word-level differences

diff -U3 --minimal "$@" |
  sed 's/^-/\x1b[1;31m-/;s/^+/\x1b[1;32m+/;s/^@/\x1b[1;34m@/;s/$/\x1b[0m/' |
  diff-highlight

( 강조에 대한 @retracile의 답변기여sed )


답변

hlgithub git clone http://github.com/mbornet-hl/hl
http://www.flashnux.com/notes/page_000022_US.html 에서 사용 가능한 명령을 살펴 봐야합니다 .

hlC로 작성된 Linux 명령으로, 특히 텍스트 파일이나 명령의 출력을 채색하도록 설계되었습니다. 최대 42 개의 색상을 동시에 사용할 수 있으며 구성 파일을 사용하여 명령 줄을 단순화 할 수 있습니다. 다른 명령으로 파이프 될 수있는 모든 명령의 출력을 채색 할 수 있습니다. 정규식이 무엇인지 아는 경우 사용하기가 매우 쉽습니다. man페이지를 사용하여 페이지 사용법 을 이해할 수 있습니다 .
hl사용 및 구성이 매우 쉽습니다. hl_generic 스크립트를 사용하여 구문을 수정하지 않고 명령 출력에 색상을 지정할 수도 있습니다 .
예를 들어 diff일반적인 명령을 입력하여 명령 의 출력을 채색 할 수 있습니다 .

diff file1 file2

도움이 필요하면 이메일을 보내주세요.
문안 인사.


답변

Github에 python으로 빌드 된 정말 깔끔한 도구가 있습니다 icdiff. “심각도”를 인식하는 멋진 색상의 출력물을 생성합니다. 나는 그것을 항상 사용할 가치가 있으며 체크 아웃 할 가치가 있습니다.


답변

vim을 설치했다면 할 수 있습니다 diff file1 file2 | vim -

Vim은 diff 형식을 인식하고 적절한 채색을합니다. 끝에 대시는 vim이 diff 명령의 입력을 받아들이도록하는 것입니다.