(가능) grep 및 less의 일관되지 않은 동작

(가능) grep 및 less의 일관되지 않은 동작

터키어 텍스트가 포함된 utf-8 파일이 있습니다. (내 시스템은 MacOSX입니다)

$ file -I foo.merge
$foo.merge: text/plain; charset=utf-8

다음을 사용하여 일부 터키어 특정 문자를 보려고 하면 문제가 없습니다 grep.

$ grep 'Emiroğlu' foo.merge
EMİROĞLU    Emiroğlu+Noun+A3sg+Pnon+Nom Emiroğlu+Noun+Prop+Noun+A3sg+P3sg+Nom   Emiroğlu+Noun+Prop+Noun+A3sg+Pnon+Nom   NOTFOUND

less문제없이 명령을 사용하여 파일을 볼 수도 있습니다 .

그러나 다음을 수행하려고 하면 터키어 문자가 올바르게 표시되지 않습니다.

$ grep 'Emir' foo.merge | less
EMİROĞLU        ESC[1;35;40mESC[KEmirESC[mESC[Koğlu+Noun+A3sg+Pnon+Nom  ESC[1;35;40mESC[KEmirESC[mESC[Koğlu+Noun+Prop+Noun+A3sg+P3sg+Nom        ESC[1;35;40mESC[KEmirESC[mESC[Koğlu+Noun+Prop+Noun+A3sg+Pnon+Nom        NOTFOUND

또는 다음 중 하나가 작동하지 않습니다.

$grep 'Emir' foo.merge > foo2.out
$less foo2.out

무엇이 문제일까요? 다음은 몇 가지 추가 정보입니다.

$ locale
LANG="en_US.utf-8"
LC_COLLATE="en_US.utf-8"
LC_CTYPE="en_US.utf-8"
LC_MESSAGES="en_US.utf-8"
LC_MONETARY="en_US.utf-8"
LC_NUMERIC="en_US.utf-8"
LC_TIME="en_US.utf-8"
LC_ALL="en_US.utf-8"

답변1

터키어 텍스트가 좋아 보입니다. 그러나 grep은 출력에 색상 코드를 삽입했습니다.

선택하다:

  • grep에 옵션을 추가합니다 --color=never(색상 제거).
  • less에 옵션을 추가합니다 -R(ASCII 색상 코드를 해석하려면 Less에게 지시).

관련 정보