악센트 문자가 있는 파일에서 텍스트 검색

악센트 문자가 있는 파일에서 텍스트 검색

파일에서 악센트가 있는 텍스트를 검색하고 싶습니다. grep을 사용하여 일반 텍스트를 검색할 수 있다는 것을 알고 있습니다.

grep -rnw './' -e 'KORONA'

KORONAVÍRUS...하지만 , 와 같이 악센트 문자가 있는 단어에는 작동하지 않습니다 obmedzená.

어떤 권장 사항이 있습니까?

답변1

모든 파일의 인코딩이 동일하다면 해당 인코딩으로 검색된 문장을 작성하시면 됩니다. 이로 인해 두 가지 가능한 조건이 발생합니다.

  • 명령줄(또는 명령이 실행되는 위치)(변수 중 하나로 설정될 수 있음 locale) 의 인코딩은 LC_*모든 파일에 대해 동일하며, 평소와 같이 grep을 수행합니다.

    grep -rn 'KORONAVÍRUS, obmedzená.'
    

-w전체 행을 일치시키려는 경우에만 이 옵션을 사용하십시오.

  • 모든 파일의 인코딩이 다른 경우 검색 문자열을 해당 인코딩으로 변경합니다.

    $ echo 'KORONAVÍRUS, obmedzená.' >orig
    $ grep -ran "$(cat orig | iconv -t CP1252)"
    

    여기서 이 -a옵션을 사용하면 grep이 binary.

파일에 다른 인코딩이 포함되어 있으면 해결책이 없습니다. 파일 인코딩을 자동으로 감지할 수 있는 방법은 없습니다.

이것은아니요통일된 인코딩이 적용되지 않은 파일의 경우 파일 목록에서 검색할 수 있습니다.

관련된:
grep/ack를 사용하여 임의로 인코딩된 파일을 처리하는 방법은 무엇입니까?

관련 정보