파일에서 악센트가 있는 텍스트를 검색하고 싶습니다. 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
.
파일에 다른 인코딩이 포함되어 있으면 해결책이 없습니다. 파일 인코딩을 자동으로 감지할 수 있는 방법은 없습니다.
이것은아니요통일된 인코딩이 적용되지 않은 파일의 경우 파일 목록에서 검색할 수 있습니다.