urlencoderΒΆ
Updated: May 07, 2024
Hi friends,
Previously I had a post regarding url encoding and decoding, This is much improved version of that script. To know more about urlencoding, try this link
#!/bin/bash
# urlencode - program to urlencode/urldecode
# Author: Mohan Raman
# License: Its in public domain.
USAGE="[USAGE]
urlencode [-e|-d] [-h]
"
HELP="${USAGE}
[DESCRIPTION]
-e URLEncode standard input(default)
-d URLDecode standard input
[EXAMPLE]
$ urlencode
http://www.google.co.in
http%3A%2F%2Fwww.google.co.in
$ urlencode -d
http%3A%2F%2Fwww.google.co.in
http://www.google.co.in
"
encode()
{
sed -e's/./&\n/g' -e's/ /%20/g' | grep -v '^$' | while read CHAR; do test "${CHAR}" = "%20" && echo "${CHAR}" || echo "${CHAR}" | grep -E '[-[:alnum:]!*.'"'"'()]|\[|\]' || echo -n "${CHAR}" | od -t x1 | tr ' ' '\n' | grep '^[[:alnum:]]\{2\}$' | tr '[a-z]' '[A-Z]' | sed -e's/^/%/g'; done | sed -e's/%20/+/g' | tr -d '\n'; echo
}
decode()
{
sed -n -e's/%\([0-9A-F][0-9A-F]\)/\\x\1/g' -e's/+/ /g' -e's/.*/echo -e "&"/g' -ep | "${SHELL}"
}
DECODE="0"
while getopts "edh" OPTION
do
case "${OPTION}" in
d) DECODE="1";;
h) echo "${HELP}"; exit 0;;
\?) echo "${USAGE}"; exit 1;;
esac
done
test "${DECODE}" = "0" && encode
test "${DECODE}" = "1" && decode