我有一个百分比编码的文件网址 - 例如file:///home/sashoalm/Has%20Spaces.txt
。我需要将其转换为本地文件 - /home/sashoalm/Has Spaces.txt
。
我怎样才能在bash中做到这一点?
答案 0 :(得分:2)
Urlencode应该这样做(-d选项)
-d根据RFC 1738进行URL解码而不是编码。%HH和%hh字符串被转换,其他字符通过 未经修改,但+被转换为空格。
答案 1 :(得分:2)
在BASH中,您可以使用此实用程序功能:
decodeURL() {
printf "$(sed 's#^file://##;s/+/ /g;s/%\(..\)/\\x\1/g;' <<< "$@")\n";
}
然后将此功能称为:
decodeURL 'file:///home/sashoalm/Has%20Spaces.txt'
/home/sashoalm/Has Spaces.txt
答案 2 :(得分:2)
Perl救援:
echo file:///home/sashoalm/Has%20Spaces.txt |\
perl -MURI -MURI::Escape -lne \
'print uri_unescape(URI->new($_)->path)'
请参阅URI和URI::Escape。
答案 3 :(得分:1)
GNU awk
#!/usr/bin/awk -fn
@include "ord"
BEGIN {
RS = "%.."
}
{
printf RT ? $0 chr("0x" substr(RT, 2)) : $0
}
或
#!/bin/sh
awk -niord '{printf RT?$0chr("0x"substr(RT,2)):$0}' RS=%..