유닉스 파일을 조건부로 포맷하고 싶었고 현재 diff
명령을 사용하고 있으며 diff
명령 출력 텍스트의 형식을 지정할 수 있는지 알고 싶었습니다 .
예:
일치하는 값은 녹색으로 표시되어야합니다.
일치하지 않는 값은 빨간색으로 표시되어야합니다.
나는 두 개의 파일이 있다고 가정 file1
및 file2
내 명령입니다 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
)
답변
hl
github git clone http://github.com/mbornet-hl/hl
및 http://www.flashnux.com/notes/page_000022_US.html 에서 사용 가능한 명령을 살펴 봐야합니다 .
hl
C로 작성된 Linux 명령으로, 특히 텍스트 파일이나 명령의 출력을 채색하도록 설계되었습니다. 최대 42 개의 색상을 동시에 사용할 수 있으며 구성 파일을 사용하여 명령 줄을 단순화 할 수 있습니다. 다른 명령으로 파이프 될 수있는 모든 명령의 출력을 채색 할 수 있습니다. 정규식이 무엇인지 아는 경우 사용하기가 매우 쉽습니다. man
페이지를 사용하여 페이지 사용법 을 이해할 수 있습니다 .
hl
사용 및 구성이 매우 쉽습니다. hl_generic 스크립트를 사용하여 구문을 수정하지 않고 명령 출력에 색상을 지정할 수도 있습니다 .
예를 들어 diff
일반적인 명령을 입력하여 명령 의 출력을 채색 할 수 있습니다 .
diff file1 file2
도움이 필요하면 이메일을 보내주세요.
문안 인사.
답변
Github에 python으로 빌드 된 정말 깔끔한 도구가 있습니다 icdiff
. “심각도”를 인식하는 멋진 색상의 출력물을 생성합니다. 나는 그것을 항상 사용할 가치가 있으며 체크 아웃 할 가치가 있습니다.
답변
vim을 설치했다면 할 수 있습니다 diff file1 file2 | vim -
Vim은 diff 형식을 인식하고 적절한 채색을합니다. 끝에 대시는 vim이 diff 명령의 입력을 받아들이도록하는 것입니다.