ksh/OpenBSD 5.3에서 (영어) az;AZ;0-9;| 문자와 공백만 "화이트리스트"/출력하려면 어떻게 해야 합니까?
$ echo 'ASDF"`date`ew � kd A | A'
ASDF"`date`ew � kd A | A
$ echo 'ASDF"`date`ew � kd A | A' | MAGIC
ASDFdateew kd A | A
그래서묻다:마법이 필요합니다 :)
고쳐 쓰다:
echo 'a|d' | LC_ALL=EN tr -dc '[:alnum:][:space:]|'
a|d
이것은 콘솔에서 작동하지만 CGI 스크립트에 넣으면 다음이 출력됩니다.
a7Cd
왜?
답변1
echo 'áé{D`AS' | LC_ALL=C tr -cd '[:alnum:]|'
(추가 개행 문자도 제거된다는 점에 유의하세요 echo
.)
LC_ALL
결정된로케일이는 어떤 문자가 무엇인지, 어떤 문자가 문자 또는 숫자로 간주되는지를 결정합니다. C 로케일에서 문자는 단일 바이트 alnums
ASCII 문자 A~Z, a~z 및 0~9입니다.