एसईडी
निम्न कमांड लाइन आज़माएं:
$ sed 's@+@ @g;s@%@\\x@g' file | xargs -0 printf "%b"
या निम्नलिखित विकल्प का उपयोग कर echo -e
:
$ sed -e's/%\([0-9A-F][0-9A-F]\)/\\\\\x\1/g' file | xargs echo -e
नोट: उपरोक्त सिंटैक्स +
रिक्त स्थान में परिवर्तित नहीं हो सकता है , और सभी नईलाइनों को खा सकता है।
आप इसे उपनाम के रूप में परिभाषित कर सकते हैं और इसे अपने शेल आरसी फाइलों में जोड़ सकते हैं:
$ alias urldecode='sed "s@+@ @g;s@%@\\\\x@g" | xargs -0 printf "%b"'
फिर हर बार जब आपको इसकी आवश्यकता हो, तो बस साथ जाएं:
$ echo "http%3A%2F%2Fwww" | urldecode
http://www
दे घुमा के
स्क्रिप्टिंग करते समय, आप निम्न सिंटैक्स का उपयोग कर सकते हैं:
input="http%3A%2F%2Fwww"
decoded=$(printf '%b' "${input//%/\\x}")
हालाँकि, सिंटैक्स ऊपर से प्लसस ( +
) को सही ढंग से हैंडल नहीं करेगा , इसलिए आप उन्हें रिक्त स्थान से बदलना चाहते हैं sed
।
आप निम्नलिखित urlencode()
और urldecode()
कार्यों का भी उपयोग कर सकते हैं :
urlencode() {
# urlencode <string>
local length="${#1}"
for (( i = 0; i < length; i++ )); do
local c="${1:i:1}"
case $c in
[a-zA-Z0-9.~_-]) printf "$c" ;;
*) printf '%%%02X' "'$c" ;;
esac
done
}
urldecode() {
# urldecode <string>
local url_encoded="${1//+/ }"
printf '%b' "${url_encoded//%/\\x}"
}
ध्यान दें कि ऊपर urldecode()
डेटा में कोई बैकस्लैश नहीं है।
यहाँ इसी तरह का जोएल का संस्करण पाया गया है: https://github.com/sixarm/urldecode.sh
bash + xxd
xxd
उपकरण के साथ बैश फ़ंक्शन :
urlencode() {
local length="${#1}"
for (( i = 0; i < length; i++ )); do
local c="${1:i:1}"
case $c in
[a-zA-Z0-9.~_-]) printf "$c" ;;
*) printf "$c" | xxd -p -c1 | while read x;do printf "%%%s" "$x";done
esac
done
}
में मिला cdown के सार फ़ाइल , यह भी पर stackoverflow ।
पीएचपी
PHP का उपयोग करके आप निम्नलिखित कमांड आज़मा सकते हैं:
$ echo oil+and+gas | php -r 'echo urldecode(fgets(STDIN));' // Or: php://stdin
oil and gas
या केवल:
php -r 'echo urldecode("oil+and+gas");'
-R
कई लाइन इनपुट के लिए उपयोग करें ।
पर्ल
पर्ल में आप उपयोग कर सकते हैं URI::Escape
।
decoded_url=$(perl -MURI::Escape -e 'print uri_unescape($ARGV[0])' "$encoded_url")
या किसी फ़ाइल को संसाधित करने के लिए:
perl -i -MURI::Escape -e 'print uri_unescape($ARGV[0])' file
awk
एनोन समाधान का प्रयास करें :
awk -niord '{printf RT?$0chr("0x"substr(RT,2)):$0}' RS=%..
नोट: पैरामीटर -n
GNU के लिए विशिष्ट है awk
।
देखें: पाठ को urldecode करने के लिए awk printf का उपयोग करना ।
डिकोडिंग फ़ाइल नाम
यदि आपको फ़ाइल नामों से url एन्कोडिंग हटाने की आवश्यकता है, तो (जैसे ) deurlname
से टूल का उपयोग करें ।renameutils
deurlname *.*
यह सभी देखें:
सम्बंधित: