Random line from bash.org (funny IRC quotes)

curl -s http://bash.org/?random1|grep -oE "<p class=\"quote\">.*</p>.*</p>"|grep -oE "<p class=\"qt.*?</p>"|sed -e 's/<\/p>/\n/g' -e 's/<p class=\"qt\">//g' -e 's/<p class=\"qt\">//g'|perl -ne 'use HTML::Entities;print decode_entities($_),"\n"'|head -1
bash.org is a collection of funny quotes from IRC. WARNING: some of the quotes contain "adult" jokes... may be embarrassing if your boss sees them... Thanks to Chen for the idea and initial version! This script downloads a page with random quotes, filters the html to retrieve just one liners quotes and outputs the first one. Just barely under the required 255 chars :) Improvment: You can replace the head -1 at the end by: awk 'length($0)>0 {printf( $0 "\n%%\n" )}' > bash_quotes.txt which will separate the quotes with a "%" and place it in the file. and then: strfile bash_quotes.txt which will make the file ready for the fortune command and then you can: fortune bash_quotes.txt which will give you a random quote from those in the downloaded file. I download a file periodically and then use the fortune in .bashrc so I see a funny quote every time I open a terminal.
Sample Output
<Lev> have you SEEN the people who wear the I LOVE LINUX T-shirts....that does more damage to the OS than a billion microsoft blue-screens

By: Iftah
2009-05-07 13:13:21

2 Alternatives + Submit Alt

  • Turns out smacie.com has a text file containing every single one of the borat quotes, each one on a newline. This makes it very convenient, as this can be done without any sed-parsing, and uses less bandwitdth! Note that borate quotes are quite offensive, much more so than "fortunes-off"! Show Sample Output

    curl -s "http://smacie.com/randomizer/borat.txt" | shuf -n 1 -
    benjabean1 · 2014-12-16 04:18:48 0
  • I improved a bit on the original by only using sed and extracting the quote with a matching group. Use -nE for sed on Mac OSX Use -nr for sed on Linux. Warning! The quotes from Borat are definitely offensive. Show Sample Output

    curl -s http://smacie.com/randomizer/borat.html | sed -nE "s# *<td valign=\"top\"><big><big><big><font face=\"Comic Sans MS\">(.*)</font></big></big></big></td>#\1#p"
    phymata · 2012-07-18 21:31:43 0

What Others Think

Well done... hopefully will make me funny doing some serious stuff :D LOL
bassu · 686 weeks ago
Btw, there is a syntax error in $awk 'length($0)>0 {printf( $0 "\n%%\n" )}') > bash_quotes.txt it should be: awk 'length($0)>0 {printf( $0 "\n%%\n" )}' > bash_quotes.txt happy kidding bash ;)
bassu · 686 weeks ago
With lynx -dump all the html code is erased from your input. I thin it's easier. Then you have to deal with paragraphs, a paragraph is a line with just spaces : sed "s/ *$//" Then your select some paragraphs with a pattern, /girl/ for instance. links -dump http://bash.org/?random1 \ | sed 's/ *$//' \ | sed -e '/./{H;$!d;}' -e 'x;/girl/!d;' But I cannot print paragraph number one or N, maybe with XML tools ?
flux · 685 weeks and 6 days ago
[code]links -dump http://bash.org/\?random1 | sed 's/\#.*/%/' | sed '1,/Add Quote \/ ModApp \/ Search /d' | sed '/Home \/ Latest /,$d' | sed 's/^ *//' >> bashorg.fortune[/code] make it a loop and there you start building your fortune
talkiwalki · 685 weeks and 5 days ago
oops, sorry links -dump http://bash.org/\?random1 | sed 's/\#.*/%/' | sed '1,/Add Quote \/ ModApp \/ Search /d' | sed '/Home \/ Latest /,$d' | sed 's/^ *//' >> bashorg.fortune
talkiwalki · 685 weeks and 5 days ago
Pipe it through cowsay! :) Thanks for this!
TheShadowFog · 555 weeks and 2 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: