이상한 색상 출력

이상한 색상 출력

내 사진이 모두 포함된 디스크에서 중복된 사진을 찾으려고 합니다. 이를 위해 중복 가능성이 있는 파일을 만들었습니다(일부 EXIF ​​및 체크섬 속성을 사용했지만 이는 질문의 목적이 아닙니다).

나는 이 형식을 사용하여 파일을 만들었습니다(주로 EXIFtool 및 몇 가지 형식을 사용함).

./PICTURES_archives/organizer/Ipad/823WGTMA/IMG_1777.JPG <--> ./PICTURES_archives/organizer/Ipad/965YOKDJ/IMG_2346.JPG

./PICTURES_archives/a Organizer/iCloud Photos/내 사진 스트림/IMG_0954.JPG <--> ./Pictures A classer/Iphone 5S Icloud/IMG_0954.JPG

awk동일한 출력을 다른 형식으로 표시하기 위해 다음 스크립트를 만들었습니다 .

awk -F'<-->' 'BEGIN {
                format1= "%25s %-50s\n"; 
                format2 = "%-50s %s\n";
                compt=1 
              } 
              {
                compt++; 
                split($1,a,"/"); 
                split($2,b,"/"); 
                longb=length(b);
                longa=length(a); 
                long=longb; 
                if (longa>longb) long=longa; 
                for(i=1; i<=long;i++) {
                    if(a[i]==b[i]) printf format1,"    ",  a[i] ; 
                    else printf format2, a[i],b[i]
                } 
                print "\n"
              }' identical.txt 

나에게 더 읽기 쉽습니다. 출력은 다음과 같습니다

아카이브 공통 경로 파일b
. .
사진_아카이브
조직자
태블릿
823WGTMA 965YOKDJ
IMG_1777.JPG IMG_2346.JPG
. .
사진_아카이브 PictureA Classer
조직자 iPhone 5S 클라우드 드라이브
iCloud 사진 IMG_0954.JPG
내 사진 스트림
IMG_0954.JPG

문제점: 파일 a와 b가 서로 다른 정보를 가지고 있을 때 출력에 색상을 추가하고 싶습니다.

나는

printf format2, "\033[33m"a[i] "\033[0m","\033[33m"b[i] "\033[0m"

but it shows me the following output

ESC[33m823WGTMAESC[0m                                  ESC[33m965YOKDJESC[0m
ESC[33mIMG_1777.JPG ESC[0m                             ESC[33mIMG_2346.JPGESC[0m

ESC[33m은 색상으로 해석되지 않습니다.

어떤 팁이 있나요?

운영 체제: Darwin macOS Big Sur

답변1

문제는 출력을 파이핑하고 less있으며 less기본적으로 이러한 이스케이프 시퀀스가 ​​해석되지 않는다는 것입니다. 그러나 사용하면 훌륭하게 작동합니다 less -R. 이에 대한 문서는 다음과 같습니다 man less.

       -R or --RAW-CONTROL-CHARS
              Like -r, but only ANSI "color" escape sequences and OSC  8  hy‐
              perlink  sequences  are  output  in "raw" form.  Unlike -r, the
              screen appearance is maintained correctly, provided that  there
              are  no  escape sequences in the file other than these types of
              escape sequences.  Color escape sequences  are  only  supported
              when  the  color  is changed within one line, not across lines.
              In other words, the beginning of each line  is  assumed  to  be
              normal  (non-colored),  regardless  of  any escape sequences in
              previous lines.  For the purpose of keeping track of screen ap‐
              pearance,  these  escape  sequences are assumed to not move the
              cursor.

관련 정보