URLに%エンコードされたUTF-8テキストを含むHTMLファイルがあります。
たとえば、「%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D1%8B」は、「ресурсы」(ロシア語で「リソース」)を意味します。
アクションは、これらのすべての部分文字列を読み取り可能なUTF-8テキストに置き換えることです。
%
作業を簡素化するために、ファイルに他のシンボルの使用がないことを考慮することができます。英数字は大文字でも小文字でもかまいません。
sed
私はこれが、または何かを使用してエレガントに行うことができると思いますperl
が、awk
方法はわかりません。
このWebアプリケーションそこに貼り付けたテキストを使うと効果があるようです。
ベストアンサー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
でサポートされているオプションの1つではないと仮定します。)
@JoshLeeも指摘したように、「エコー警告」を直接使用することで回避できます。
printf ${url_encoded_string//%/\\x}
最初の命令の直後ではありません。