로케일 인식 대문자 작업을 수행하는 방법은 무엇입니까?Bash에서 로케일 인식 대문자?
표준 TR '[: 낮은 :]' '[: 상단 :]'트릭이 작동하지 않습니다
이=$ echo żółw | tr "[:lower:]" "[:upper:]"
żółW
차라리하는 것을 피하기 것 (이 ŻÓŁW해야한다) Perl이나 그와 같은 무거운 것을 실행하십시오.
로케일 인식 대문자 작업을 수행하는 방법은 무엇입니까?Bash에서 로케일 인식 대문자?
표준 TR '[: 낮은 :]' '[: 상단 :]'트릭이 작동하지 않습니다
이=$ echo żółw | tr "[:lower:]" "[:upper:]"
żółW
차라리하는 것을 피하기 것 (이 ŻÓŁW해야한다) Perl이나 그와 같은 무거운 것을 실행하십시오.
그것은 그 진정한 일반적인 솔루션에 대한 성공할 가망의 제공, 당신은 헤비급을 피하려는 경우 문자를 직접 제공해야 거라고 나에게 것, 그리고, 당신은 헤비급를 사용하여 붙어있다. 각 문자를
[email protected]:~$ echo żół | tr "[żół]" "[ŻÓŁ]"
ŻÓŁ
편집을 지정 요구
한 헤비급 솔루션
[email protected]:~$ more t.py
# coding: UTF-8
print unicode.upper("żółw".decode('utf-8'))
[email protected]:~$ python t.py
ŻÓŁW
비 헤비급 솔루션 : 다른 답변과 의견을 바탕으로, BASH 4.0 로케일 민감하고 인식 와이드 문자. BASH가 무엇을해야하는지 알 수 있도록 적절한 로케일 (LC_CTYPE 또는 LC_ALL)을 설정해야합니다. 또한 로케일 민감한 버전의 늦은 (예를 들어, Mac OSX 10.6)
잘 - 파이썬은 내가 피하고 싶은 것들의 범위에 있습니다. 너무 무거워. 각 문자를 지정하는 것과 마찬가지로 "żółw"는 단순하지만 일반적으로 일반적으로 작동시키는 것은 사실상 불가능합니다. –
네, 그게 제가 첫 번째 단락에서 말한 것입니다. 내가 아는 한 멀리 찾을 수있는 한, tr의 유니 코드 인식 버전이 없으며 BASH도 와이드 문자를 인식하지 못합니다. –
실제로, OS X와 아마 FreeBSD에서 tr *은 로케일을 인식하고 OP의 예제가 작동합니다. –
bash가 충분히 새로운 경우, 그것을 할 수 있습니다 (bash-4.0 NEWS item 1.hh. 참조) 수 있습니다.
bash -c 'foo="żółw"; echo ${foo^^}'
zsh을 너무 (4.3.3 이후는?) : 당신은 그럴 필요를 실행하는 경우
zsh -c 'foo="żółw"; echo ${(U)foo}'
당신은 아마 (-a 로케일'볼 적어도 UTF-8 변화에 LC_CTYPE을 설정해야합니다 또한 당신의 로케일 설정은 무엇입니까 4.0.35 :( –
광산은 4.0.35입니다 떠들썩한 파티에 나를 위해 작동하지 않습니다 | 주 : fgrep UTF는-8').'경우 locale'는 모든 것이'C'는, 그것은 작동하지 않습니다보고합니다. 내 LC_CTYPE은'은 en_US.UTF-8'이다. –
이 "bash는"에 대한 없습니다. – unwind