bash의 HTML 페이지에서 특수 16진수 문자를 변환하는 방법은 무엇입니까? [복사]

bash의 HTML 페이지에서 특수 16진수 문자를 변환하는 방법은 무엇입니까? [복사]

웹 페이지의 일부 정보를 처리하는 스크립트가 있습니다. 페이지 인코딩으로 인해 일부 특수 문자가 16진수로 인코딩된 것 같습니다. 예를 들어, "/"로 번역되어야 하는 문자열 "%2f"가 있습니다.

bash에서 이러한 16진수 특수 문자를 ASCII로 어떻게 변환합니까? 어떤 아이디어가 있나요?

답변1

printfBash에는 C에서 배운 것과 거의 동일한 내장 기능이 있습니다 . 구문이 약간 다릅니다.

printf '\x2f'

더 높은 수준의 데이터 일관성 문제에 대해 걱정할 필요가 없다면 다음 함수를 통해 간단히 URL을 변환할 수 있습니다.

function deUrl() {
    printf "${1//%/\\x}"
}

%(모든 것을 a로 변환 \x한 다음 printf로 인쇄합니다.)

답변2

이러한 엔터티는 다음 Python one-liner를 사용하여 디코딩할 수 있습니다.

$ python -c "import urllib, sys; print urllib.unquote(sys.argv[1])"  "%2f"
/

코드는 단일 문자로 제한되지 않습니다. 더 복잡한 문자열을 허용합니다.

$ python -c "import urllib, sys; print urllib.unquote(sys.argv[1])"  "%2d and %2f"
- and /

Python의 urllib.unquote문서화됨여기.

관련 정보