Text-Processing
如何用純 UTF-8 文本替換所有百分比編碼的 UTF-8 子字元串?
我有一個 html 文件,在 URL 中有很多 % 編碼的 UTF-8 文本。
例如“%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D1%8B”代表“ресурсы”(俄語中的“資源”)。
任務是用可讀的 UTF-8 文本替換所有此類子字元串。
為了簡化任務,我們可以考慮文件中沒有其他
%
符號用法。字母數字既可以是大寫也可以是小寫。我懷疑這可以用 , 或其他東西優雅地完成
sed
,perl
但awk
不知道如何。這個 Web 應用程序似乎可以使用您粘貼到那裡的文本來解決問題。
使用 bash、zsh、GNU echo 或某些系統上的某些 ksh 實現,只需
echo -e
將 all 替換%
為\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}
而是直接在第一個命令後面。