terça-feira, 7 de agosto de 2007

Google Wars

Inutilidade Pública: veja o que/quem possui mais resultados no google?

./GoogleWars.sh  superman batman
batman 48500000
superman 33700000

./GoogleWars.sh gremio inter
inter 213000000
gremio 5560000

./GoogleWars.sh hp ibm
hp 379000000
ibm 147000000

./GoogleWars.sh cobol java fortran perl ruby lisp haskell
java 272000000
perl 103000000
ruby 101000000
lisp 21400000
fortran 17400000
haskell 15400000
cobol 10900000

O script é simples, abusando um pouco do SED e do AWK, com um toque de SORT ;-)

#!/bin/bash
COR=`echo -ne '\e[31;1m'`
END=`echo -ne '\e[m'`
CORSED="1s/.*/${COR}&${END}/"
GOOGLE='http://www.google.com/search'

[[ $2 ]] || { echo "usage: $0 item item2 [ ... item n]" ; exit 0 ; }

SEDCMD='/did not match any documents/{s/.*/0/g;p;q}
/Results/{s/.* about[ ]\+\([0-9,.]\+\).*/\1\n/;p;q}'
AWKCMD='{ result[$1]=$2 ; x = length($1) ; if(x > max) max=x }
END{ for(i in result) printf "%-"max"s\t%s\n",i,result[i]}'

for i in "$@" ; do echo -ne "${i}\t"
lynx -dump "${GOOGLE}?q=${i}" | tr -d '\n.,' | sed -n "${SEDCMD}"
done | awk -F '\t' "${AWKCMD}" | sort -nr -t $'\t' -k 2 | sed "${CORSED}"


Quem quiser melhora-lo, sinta-se à vontade :)

Edit: ja lancei uma versão .02 com umas correções cosméticas aqui -- não resisti...

Nenhum comentário: