정규식: 상표 기호가 az와 일치하는 이유는 무엇입니까?

정규식: 상표 기호가 az와 일치하는 이유는 무엇입니까?

중복되거나 기본적인 질문이라면 죄송합니다. 검색이 어렵습니다™. 파일 이름에서 이상한 문자를 제거하는 스크립트를 작성 중입니다.

상표 기호를 일치시키는 방법은 무엇입니까 [^a-z]? ​​? ?

$ echo "AMD Ryzen™ 5 2600X Processor rstuv" |sed 's/[^A-Z]//g'
AMDRXP

$ echo "AMD Ryzen™ 5 2600X Processor rstuv" |sed 's/[^a-z]//g'
yzen™rocessorrstuv

$ echo "AMD Ryzen™ 5 2600X Processor rstuv" |sed 's/[^s-t]//g'
ssst

$ echo "AMD Ryzen™ 5 2600X Processor rstuv" |sed 's/[^t-u]//g'
™tu

t~ 사이인 것 같습니다 u.

편집: 시스템 사양:

$ locale
LANG=en_CA.UTF-8
LANGUAGE=en_CA:en
LC_CTYPE="en_CA.UTF-8"
LC_NUMERIC="en_CA.UTF-8"
LC_TIME=en_CA.UTF-8
LC_COLLATE="en_CA.UTF-8"
LC_MONETARY="en_CA.UTF-8"
LC_MESSAGES="en_CA.UTF-8"
LC_PAPER="en_CA.UTF-8"
LC_NAME="en_CA.UTF-8"
LC_ADDRESS="en_CA.UTF-8"
LC_TELEPHONE="en_CA.UTF-8"
LC_MEASUREMENT="en_CA.UTF-8"
LC_IDENTIFICATION="en_CA.UTF-8"
LC_ALL=

$ lsb_release -sdc; uname -sri
Ubuntu 20.04.6 LTS
focal
Linux 5.4.0-172-generic x86_64

$ sed --version
sed (GNU sed) 4.7

답변1

Ubuntu 22.04 및 en_GB.UTF-8로케일 설정은 다음과 같습니다.

$ print -l {{s..u},{S..U}}{l..n} ™ 

관련 정보