URL에 % 인코딩된 UTF-8 텍스트가 많이 포함된 HTML 파일이 있습니다.
예를 들어, "%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D1%8B"는 "ресурсы"(러시아어로 "자원")를 의미합니다.
작업은 이러한 모든 하위 문자열을 읽을 수 있는 UTF-8 텍스트로 바꾸는 것입니다.
%
작업을 단순화하기 위해 파일에 다른 기호 사용이 없다는 점을 고려할 수 있습니다. 영숫자 문자는 대문자 또는 소문자일 수 있습니다.
sed
나는 이것이 , 또는 무엇인가를 사용하여 우아하게 수행될 수 있다고 생각 perl
하지만 , awk
방법은 확실하지 않습니다.
이 웹 애플리케이션거기에 붙여넣은 텍스트를 사용하면 효과가 있을 것 같습니다.
답변1
일부 시스템에서 bash, zsh, GNU echo 또는 ksh를 구현하려면 echo -e
모든 %
것을 \x
.
url_encoded_string="%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D1%8B"
temp_string=${url_encoded_string//%/\\x}
printf '%s\n' "$temp_string"
# output: \xD1\x80\xD0\xB5\xD1\x81\xD1\x83\xD1\x80\xD1\x81\xD1\x8B
echo -e "$temp_string"
# output: ресурсы
(문자열 자체에는 백슬래시 문자가 포함되어 있지 않으며 명령 echo
에서 지원하는 옵션 중 하나 가 아니라고 가정합니다.)
@JoshLee도 지적했듯이 "에코 경고"를 직접 사용하면 피할 수 있습니다.
printf ${url_encoded_string//%/\\x}
첫 번째 명령 직후가 아니라.
답변2
펄 사용:
perl -pe 's/%([0-9A-F]{2})/pack"H2",$1/gei'
또는 다음을 사용하여 URI::Escape
:
perl -MURI::Escape -pe '$_=uri_unescape$_'
답변3
도움을 줄 수 있는 프로그램이 있습니다 convmv
.
.it을 사용하면 convmv --unescape /some_path/target_file
테스트 실행이 수행됩니다.
확인하신 후 계속을 이용해주세요 convmv --notest --unescape /some_path/target_file
.
프로그램의 홈 페이지는 다음과 같습니다.http://j3e.de/linux/convmv/