কিন্তু
নিম্নলিখিত কমান্ড লাইন চেষ্টা করুন:
$ 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
বাশ + এক্সএক্সডি
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 ।
পিএইচপি
পিএইচপি ব্যবহার করে আপনি নিম্নলিখিত কমান্ডটি ব্যবহার করতে পারেন:
$ 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
গনুহ নির্দিষ্ট awk
।
দেখুন: পাঠাতে urldecode তে awk মুদ্রণযন্ত্র ব্যবহার করা ।
ফাইলের নাম ডিকোডিং
আপনার যদি ফাইলের নামগুলি থেকে url এনকোডিং অপসারণ করতে deurlname
হয় তবে renameutils
(যেমন deurlname *.*
) থেকে সরঞ্জামটি ব্যবহার করুন ।
আরো দেখুন:
সম্পর্কিত: