Url Encode

uri_escape(){ echo -E "$@" | sed 's/\\/\\\\/g;s/./&\n/g' | while read -r i; do echo $i | grep -q '[a-zA-Z0-9/.:?&=]' && echo -n "$i" || printf %%%x \'"$i" done }
This one uses hex conversion to do the converting and is in shell/sed only (should probably still use the python/perl version).

1
By: infinull
2010-02-13 01:39:51

5 Alternatives + Submit Alt

  • Converts reserved characters in a URI to their percent encoded counterparts. Alternate python version: echo "$url" | python -c 'import sys,urllib;print urllib.quote(sys.stdin.read().strip())' Show Sample Output


    7
    echo "$url" | perl -MURI::Escape -ne 'chomp;print uri_escape($_),"\n"'
    eightmillion · 2010-02-13 00:44:48 17

  • 2
    echo "$@" | sed 's/ /%20/g;s/!/%21/g;s/"/%22/g;s/#/%23/g;s/\$/%24/g;s/\&/%26/g;s/'\''/%27/g;s/(/%28/g;s/)/%29/g;s/:/%3A/g'
    matthewbauer · 2010-02-12 23:59:55 27
  • Returns URL Encoded string from input ($1).


    2
    $ php -r "echo urlencode('$1');"
    Kataklysmos · 2012-01-07 19:35:33 3
  • It only encodes non-Basic-ASCII chars, as they are the only ones not well readed by UTF-8 and ISO-8859-1 (latin-1). It converts all * C3 X (some latin symbols like ASCII-extended ones) and * C2 X (some punctuation symbols like inverted exclamation) ...UTF-8 double byte symbols to escaped form that every parser understands to form the URLs. I didn't encode spaces and the rest of basic punctuation, but supposedly, space and others are coded as \x20, for example, in UTF-8, latin-1 and Windows-cp1252.... so its read perfectly. Please feel free to correct, the application to which I designe that function works as expected with my assumption. Note: I specify a w=999, I didn't find a flag to put unlimited value. I just suppose very improbable surpass the de-facto 255 (* 3 byte max) = 765 bytes length of URL Show Sample Output


    1
    od -An -w999 -t xC <<< "$1" | sed 's/[ ]\?\(c[23]\) \(..\)/%\1%\2/g;s/ /\\\\\x/g' | xargs echo -ne
    nightswimming · 2010-05-31 16:35:52 17
  • Similar to the perl version. Show Sample Output


    0
    ruby -nr 'uri' -e 'puts URI.escape $_.chomp'
    sagittarian · 2015-04-18 06:53:39 5

What Others Think

I like what you've done here, but I wanted to see if I could do it with only bash. This is what I came up with: uri_escape(){ local y;y="$@";echo -n ${y/\\/\\\\} | while read -n1;do [[ $REPLY =~ [A-Za-z] ]] && printf "$REPLY" || printf "%%%x" \'"$REPLY";done;echo;} It's also quite a bit quicker. You're version also seems to be missing some semicolons. And when you use read with a variable specified, when it hits a space it sets that variable to null, causing printf to output "%0"s instead of "%20"s. You can avoid that, like I've done, by not supplying a variable to the read builtin.
eightmillion · 676 weeks and 6 days ago
yeah, it's actually 3 lines in my .zshrc; and copy/paste doesn't preserve the newlines. (and I'm using zsh which might account for the differences in the "read" builtin that you noticed). Similar concept, but in zsh, uses the zsh [[ ]] and =~ instead of the bashes [ ] and ~= And I remembered the semicolons this time :-) uri_escape(){ local y=$@:s/\\/\\\\/; for i in `seq 1 ${#y}`; do [[ "${y[i]}" =~ '[a-zA-Z0-9/.:?&=]' ]] && echo -n ${y[i]} || printf %%%x \'${y[i]}; done }
infinull · 676 weeks and 6 days ago
I thought that you might be using a different shell. That new version does do the job.
eightmillion · 676 weeks and 6 days ago
Pug Puppies for Sale Near Me pugs puppies for sale teacup pugs for sale pug puppies for sale by owner pug puppies ohio PUG PUPPY FOR SALE NEAR ME PUG PUPPIES FOR SALE pug puppies for sale in kentucky Pug Puppies for Sale Under $500 Near Me pug puppies for sale in texas pug puppies for sale $200 pugs for sale near me under $500 pugs for sale under $400 near me pugs for sale near me puppies for sale near me under $500 pug puppies for sale under $1,000 near me pug for sale pug puppies for sale under $300 Brindle Pug Pitbull Pug Mix Pugs for sale cheap Cheap pug affordable pug puppies for sale near me black pugs for sale near me White Pugs for sale pug dog for sale free pug puppies pug puppies for sale in my area mn pug breeders pug puppies indiana pugs for sale michigan PUG PUPPY ADOPTION Pug puppies for sale Pug puppies for sale near me Pug puppies near me Pug Puppies for Sale Under $500 Near Me Cute Pug Puppies Black pug puppies Black pug puppies for sale pug puppies for adoption black pug puppies for sale near me chihuahua pug mix puppies how much is a pug puppy teacup pug puppies baby pug puppies pictures of pug puppies pug puppies for sale in Ohio pug puppies price pug mix puppies teacup pug puppies for sale best food for pug puppy newborn pug puppies pug puppies craigslist pug puppies for sale craigslist adorable pug puppies how much does a pug puppy cost Pitbull pug mix puppies pug pit mix puppy pug puppies for sale $200 pug puppies for sale in NJ Pug puppies for sale in Wisconsin pug puppy cost pug puppy food royal canin pug puppy royal canin pug puppy food fawn pug puppy pug puppies for sale florida pug puppies for sale in Indiana pug puppies for sale in KY pug puppies for sale in NC pug dog puppy AKC Registered Pug Puppies For sale cheap pug puppies for sale near me cheap pug puppies for sale in California cheap pug puppies for sale in nj Black Pug Puppies for sale pugs puppies for sale pug puppies indiana Amazing! This blog looks just like my old one! It's on a completely different subject but it has pretty much the same layout and design. Wonderful choice of colors!
rahimhh21 · 22 weeks and 1 day ago
Wow what a Great Information about World Day its exceptionally pleasant educational post. a debt of gratitude is in order for the post. Cashblurbs
seomind · 19 weeks and 3 days ago
I’ve been searching for some decent stuff on the subject and haven't had any luck up until this point, You just got a new biggest fan!.. Isagenix MLM
seomind · 19 weeks and 3 days ago
The material and aggregation is excellent and telltale as comfortably. Money Looper Review
seomind · 19 weeks and 3 days ago
This is a wonderful article, Given so much info in it, These type of articles keeps the users interest in the website, and keep on sharing more ... good luck. Money Looper Review
seomind · 19 weeks and 3 days ago
Actually I read it yesterday but I had some thoughts about it and today I wanted to read it again because it is very well written. Money Looper Review
seomind · 19 weeks and 3 days ago
Three are usually cheap Ralph Lauren available for sale each and every time you wish to buy. The Rich Life Letter
seomind · 19 weeks and 3 days ago
so happy to find good place to many here in the post, the writing is just great, thanks for the post. Isagenix MLM
seomind · 19 weeks and 3 days ago
Took me time to read all the comments, but I really enjoyed the article. It proved to be Very helpful to me and I am sure to all the commenters here! It’s always nice when you can not only be informed, but also entertained! The Rich Life Letter
seomind · 19 weeks and 3 days ago
I see some amazingly important and kept up to length of your strength searching for in your on the site The Rich Life Letter
seomind · 19 weeks and 3 days ago
Personally I think overjoyed I discovered the blogs. Isagenix MLM
seomind · 19 weeks and 3 days ago
Pug Puppies for Sale Near Me pugs puppies for sale teacup pugs for sale pug puppies for sale by owner pug puppies ohio PUG PUPPY FOR SALE NEAR ME PUG PUPPIES FOR SALE pug puppies for sale in kentucky Pug Puppies for Sale Under $500 Near Me pug puppies for sale in texas pug puppies for sale $200 pugs for sale near me under $500 pugs for sale under $400 near me pugs for sale near me puppies for sale near me under $500 pug puppies for sale under $1,000 near me pug for sale pug puppies for sale under $300 Brindle Pug Pitbull Pug Mix Pugs for sale cheap Cheap pug affordable pug puppies for sale near me black pugs for sale near me White Pugs for sale pug dog for sale free pug puppies pug puppies for sale in my area mn pug breeders pug puppies indiana pugs for sale michigan PUG PUPPY ADOPTION Pug puppies for sale Pug puppies for sale near me Pug puppies near me Pug Puppies for Sale Under $500 Near Me USA USA USA USA USA USA Cute Pug Puppies Black pug puppies Black pug puppies for sale pug puppies for adoption black pug puppies for sale near me chihuahua pug mix puppies how much is a pug puppy teacup pug puppies baby pug puppies baby pug puppies for sale pictures of pug puppies pug puppies for sale in Ohio pug puppies price pug mix puppies teacup pug puppies for sale best food for pug puppy newborn pug puppies pug puppies craigslist pug puppies for sale craigslist adorable pug puppies how much does a pug puppy cost Pitbull pug mix puppies pug pit mix puppy pug puppies for sale $200 pug puppies for sale in NJ Pug puppies for sale in Wisconsin pug puppy cost pug puppy food royal canin pug puppy royal canin pug puppy food fawn pug puppy pug puppies for sale florida pug puppies for sale in Indiana pug puppies for sale in KY pug puppies for sale in NC pug dog puppy AKC Registered Pug Puppies For sale cheap pug puppies for sale near me cheap pug puppies for sale in California cheap pug puppies for sale in nj Black Pug Puppies for sale pugs puppies for sale
Perfecthomepugs · 13 weeks and 3 days ago
This is my first time reading your post. It's very good and interesting. I am very impressed with this site and always look forward to the next article from you. https://nytminicrossword.co Please continue to uphold.
johndavidd88 · 10 weeks and 4 days ago
This is my first time reading your post. It's very good and interesting. I am very impressed with this site and always look forward to the next nyt mini crossword article from you. Please continue to uphold.
johndavidd88 · 10 weeks and 4 days ago
I think about it is most required for making more on this get engaged Etsy Printable Ideas Review
seomind · 5 days ago
Wonderful blog post. This is absolute magic from you! I have never seen a more wonderful post than this one. You've really made my day today with this. I hope you keep this up! Abdul Farooqi Review
seomind · 5 days ago
Hi buddies, it is great written piece entirely defined, continue the good work constantly. Luke Lango Review
seomind · 5 days ago
You completely match our expectation and the variety of our information. Abdul Farooqi Review
seomind · 5 days ago
Amazing knowledge and I like to share this kind of information with my friends and hope they like it they why I do Luke Lango Review
seomind · 5 days ago
very interesting post.this is my first time visit here.i found so many interesting stuff in your blog especially its discussion..thanks for the post! Abdul Farooqi Review
seomind · 5 days ago
wow... what a great blog, this writter who wrote this article it's realy a great blogger, this article so inspiring me to be a better person Luke Lango Review
seomind · 5 days ago
I have read your article, it is very informative and helpful for me.I admire the valuable information you offer in your articles. Thanks for posting it.. Tim Han Review
seomind · 5 days ago
I quite like reading an article that can make people think. Also, thanks for allowing for me to comment! Tim Han Review
seomind · 5 days ago
We are really grateful for your blog post. You will find a lot of approaches after visiting your post. Great work Tim Han Review
seomind · 5 days ago

What do you think?

Any thoughts on this command? Does it work on your machine? Can you do the same thing with only 14 characters?

You must be signed in to comment.

What's this?

commandlinefu.com is the place to record those command-line gems that you return to again and again. That way others can gain from your CLI wisdom and you from theirs too. All commands can be commented on, discussed and voted up or down.

Share Your Commands



Stay in the loop…

Follow the Tweets.

Every new command is wrapped in a tweet and posted to Twitter. Following the stream is a great way of staying abreast of the latest commands. For the more discerning, there are Twitter accounts for commands that get a minimum of 3 and 10 votes - that way only the great commands get tweeted.

» http://twitter.com/commandlinefu
» http://twitter.com/commandlinefu3
» http://twitter.com/commandlinefu10

Subscribe to the feeds.

Use your favourite RSS aggregator to stay in touch with the latest commands. There are feeds mirroring the 3 Twitter streams as well as for virtually every other subset (users, tags, functions,…):

Subscribe to the feed for: