2017-02-27 1 views
0

파일을 단어 목록으로 분할하고 싶습니다.이 단어는 tr을 사용하여 매우 간단합니다. 그러나 그것은 특별한 덴마크 문자에서 분리 된 단어입니다.번역 : tr가 스칸디나비아 문자 세트를 인식하지 못합니다

echo København Helsingør|tr -c "[:alpha:]" "\n" K� benhavn Helsing� r

은 분명히 "ø"는 [:alpha:] 세트의 구성원이 아닙니다. 나는 macOS와 리눅스에서 같은 결과를 얻는다. 나는

LC_TYPE=da_DK.UTF-8 echo København Helsingør|tr -c "[:alpha:]" "\n"

으로 명령 접두어 시도했지만 그 같은 결과를 제공합니다.

+0

'LC_TYPE'이 아닌 'LC_CTYPE'이라고 생각합니다. –

+0

또한,'echo'가 아닌'tr'에 대해서 설정해야합니다. –

+0

오타, 죄송합니다. 로케일 설정 방법에 상관없이 아무런 차이가 없습니다. LC_ALL 및 LANG도 시도했습니다. – mok0

답변

1

LC_CTYPE (LC_TYPE이 아님)은 tr (echo 아님)으로 설정해야합니다.

$ echo "København Helsingør" | LC_CTYPE=da_DK.UTF-8 tr -c "[:alpha:]" "\n" 
København 
Helsingør 

특히, 이것은 맥 OS 네이티브 tr와 재현 할 때 위와 같은 방법으로 LC_CTYPE=C 설정 : 따라서이 메커니즘은 문자 클래스 로케일 설정을 수정에 성공했음을 보여주는 ...

$ echo "København Helsingør" | LC_CTYPE=C tr -c "[:alpha:]" "\n" 
K 

benhavn 
Helsing 

r 

.

+0

홈 - 브루어 (home-brew)의 GNU'tr'에는 문제가 있습니다. 네이티브 macOS의'/ usr/bin/tr'에서 올바르게 작동합니다. 집에서 만든 버전은 로켈을 무시하는 것 같습니다. 왜 그것이 또 다른 질문입니다 :-) 감사합니다! – mok0

+1

실제로 추가 할 수도 있습니다. –

+2

이것은 [GNU tr의 알려진 문제점] (http://unix.stackexchange.com/questions/228558/how-to-make-tr-aware-of-non-asciiunicode-characters)입니다. 2008 년부터 [버그가 열려 있습니다] (https://savannah.gnu.org/bugs/?23030)되었습니다. 매우 슬퍼합니다. –

1

해결. homebrew (/usr/local/opt/coreutils/libexec/gnubin/tr)의 GNU tr이 내 기본값이며, 로케일의 설정을 무시하는 것 같습니다. 네이티브 macOS의 /usr/bin/tr으로 정확한 단어 분할을 얻습니다.

관련 문제