Hello all, From more than 30 days I am waiting for an upload for the package funcoeszz[1] by the previous sponsor.
This new version fixes the bug 486326[2], translating the man page to english. Also, this upgrade the package to 3.8.0 policy version, without modifications. Due time problems, It couldn't be done by the sponsor. In this meantime a new upstream version was released. In less than two months in sid, the package has 52 installations, according popcon[3]. Attached you can found the diff between the currently lenny version and this new one. As you can see, Although the diff has 1047 lines, this is a set of little modification in the functions, improving the shell syntax. Several parts is just adding quotes to variable names. the mainstream changelog: - new function zzalfabeto (alphabetic central: roman, military, OTAN, RAF, etc) - new function zzrot13 - code/decode a string in ROT13 - new function zzrot47 - code/decode a string in ROT47 - zzcnpj - better output messages - zzdicasl - Now utilizes zztool texto_em_iso/utf8 to eliminate accentuation problems. - zzdicbabylon - Now utilizes zztool texto_em_iso to eliminate accentuation problems. zznoticiaslinux - Now utilizes zztool texto_em_iso to eliminate accentuation problems. - zztool - new tools to convert iso to utf-8 Please unblock it newly version to propagate into testing. If you need any other info just ask for it. 1- http://packages.qa.debian.org/f/funcoeszz.html 2- http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=486326 3- http://qa.debian.org/popcon.php?package=funcoeszz Kind regards, -- Eder L. Marques Just another weekend hacker http://blog.edermarques.net/ | http://www.debian.org/ http://administrando.net/ | http://www.debianbrasil.org/ http://www.fsfla.org/ | http://www.debian-ce.org/
--- funcoeszz-8.3.sh 2008-08-05 13:49:05.000000000 -0300 +++ funcoeszz-8.7.sh 2008-08-05 13:42:39.000000000 -0300 @@ -7,10 +7,10 @@ # Thobias Salazar Trevisan <thobias (a) thobias org> # DESCRIÃÃO : Funções de uso geral para o shell Bash, que buscam # informações em arquivos locais e fontes na Internet -# LICENÃA : GPL +# LICENÃA : GPL v2 # CHANGELOG : www.funcoeszz.net/changelog.html # -ZZVERSAO=8.3 +ZZVERSAO=8.7 ZZUTF=1 # ############################################################################## @@ -159,22 +159,22 @@ ;; testa_numero) # Testa se $2 é um número positivo - echo "$2" | grep -qs '^[0-9]\{1,\}$' + echo "$2" | grep '^[0-9]\{1,\}$' >/dev/null # TODO Usar em *todas* as funções que recebem números ;; testa_numero_sinal) # Testa se $2 é um número (pode ter sinal: -2 +2) - echo "$2" | grep -qs '^[+-]\{0,1\}[0-9]\{1,\}$' + echo "$2" | grep '^[+-]\{0,1\}[0-9]\{1,\}$' >/dev/null ;; testa_binario) # Testa se $2 é um número binário - echo "$2" | grep -qs '^[01]\{1,\}$' + echo "$2" | grep '^[01]\{1,\}$' >/dev/null ;; testa_ip) # Testa se $2 é um número IP (nnn.nnn.nnn.nnn) local nnn="\([0-9]\{1,2\}\|1[0-9][0-9]\|2[0-4][0-9]\|25[0-5]\)" # 0-255 - echo "$2" | grep -qs "^$nnn\.$nnn\.$nnn\.$nnn$" + echo "$2" | grep "^$nnn\.$nnn\.$nnn\.$nnn$" >/dev/null ;; multi_stdin) # Mostra na tela os argumentos *ou* a STDIN, nesta ordem @@ -196,7 +196,23 @@ sed 's/^[[:blank:]]*// ; s/[[:blank:]]*$//' ;; terminal_utf8) - echo "$LC_ALL $LC_CTYPE $LANG" | grep -qs -i utf + echo "$LC_ALL $LC_CTYPE $LANG" | grep -i utf >/dev/null + ;; + texto_em_iso) + if test $ZZUTF = 1 + then + iconv -f iso-8859-1 -t utf-8 /dev/stdin + else + cat - + fi + ;; + texto_em_utf8) + if test $ZZUTF != 1 + then + iconv -f utf-8 -t iso-8859-1 /dev/stdin + else + cat - + fi ;; # Ferramentas inexistentes são simplesmente ignoradas esac @@ -319,7 +335,7 @@ # Um xunxo bonito: filtra a saÃda da zzajuda, mostrando # apenas a função informada. zzajuda | - grep -C9 "^$padrao\b" | + grep -C15 "^$padrao\b" | sed -n " H /^---/ { @@ -349,13 +365,13 @@ ### Todos os comandos necessários estão instalados? local comando tipo_comando comandos_faltando - local comandos='awk- bc cat chmod- clear- cp cpp- cut diff- du- find- grep lynx mv od- play- ps- rm sed sleep sort tr uniq' + local comandos='awk- bc cat chmod- clear- cp cpp- cut diff- du- find- grep iconv- lynx mv od- play- ps- rm sed sleep sort tail- tr uniq' for comando in $comandos do # Este é um comando essencial ou opcional? tipo_comando='ESSENCIAL' - if zztool grep_var - $comando + if zztool grep_var - "$comando" then tipo_comando='opcional' comando=${comando%-} @@ -377,7 +393,7 @@ then echo zztool eco "**Atenção**" - if zztool grep_var ESSENCIAL $comandos_faltando + if zztool grep_var ESSENCIAL "$comandos_faltando" then echo 'Há pelo menos um comando essencial faltando.' echo 'Você precisa instalá-lo para usar as Funções ZZ.' @@ -445,7 +461,7 @@ # Instala as funções no arquivo .bashrc --bashrc) - if ! grep -qs "^[^#]*${ZZPATH:-zzpath_vazia}" "$bashrc" + if ! grep "^[^#]*${ZZPATH:-zzpath_vazia}" "$bashrc" >/dev/null 2>&1 then ( echo @@ -466,7 +482,7 @@ arquivo_aliases="$HOME/.zzcshrc" # Chama o arquivo dos aliases no final do .tcshrc - if ! grep -qs "^[^#]*$arquivo_aliases" "$tcshrc" + if ! grep "^[^#]*$arquivo_aliases" "$tcshrc" >/dev/null 2>&1 then ( echo @@ -499,7 +515,7 @@ [ "$ZZUTF" = 1 ] && info_utf8='UTF-8' || info_utf8='ISO-8859-1' # As funções estão instaladas no bashrc? - if grep -qs "^[^#]*${ZZPATH:-zzpath_vazia}" "$bashrc" + if grep "^[^#]*${ZZPATH:-zzpath_vazia}" "$bashrc" >/dev/null 2>&1 then info_instalado="$bashrc" else @@ -617,12 +633,12 @@ zztool uso byte return fi - if ! zztool grep_var $entrada $unidades + if ! zztool grep_var $entrada "$unidades" then echo "Unidade inválida '$entrada'" return fi - if ! zztool grep_var $saida .$unidades + if ! zztool grep_var $saida ".$unidades" then echo "Unidade inválida '$saida'" return @@ -704,7 +720,7 @@ zzzz -h beep $1 && return local minutos frequencia - + # Sem argumentos, apenas restaura a "configuração de fábrica" do beep [ "$1" ] || { printf '\033[10;750]\033[11;100]\a' @@ -1042,7 +1058,7 @@ olho 00 aviao --o-0-o-- jacare ==*-,,--,,-- - alien /-=-\ + alien /-=-\\ rosa --/--\-<@ peixe >-)))-D siri (_).-=''=-.(_) @@ -1154,6 +1170,7 @@ # ---------------------------------------------------------------------------- # Conversão de telefones contendo letras para apenas números. +# Autor: Rodolfo de Faria <rodolfo faria (a) fujifilm com br> # Uso: zzfoneletra telefone # Ex.: zzfoneletra 2345-LINUX # Retorna 2345-54689 # echo 5555-HELP | zzfoneletra # Retorna 5555-4357 @@ -1163,12 +1180,147 @@ zzzz -h foneletra $1 && return # Um Sed faz tudo, é uma tradução letra a letra - zztool multi_stdin $* | + zztool multi_stdin "$@" | zzmaiusculas | sed y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/22233344455566677778889999/ } +# ---------------------------------------------------------------------------- +# Codifica/decodifica um texto utilizando a cifra ROT13 +# Uso: zzrot13 texto +# Ex.: zzrot13 texto secreto # Retorna: grkgb frpergb +# zzrot13 grkgb frpergb # Retorna: texto secreto +# echo texto secreto | zzrot13 # Retorna: grkgb frpergb +# ---------------------------------------------------------------------------- +zzrot13 () +{ + zzzz -h rot13 $1 && return + + # Um tr faz tudo, é uma tradução letra a letra + # Obs.: Dados do tr entre colchetes para funcionar no Solaris + zztool multi_stdin "$@" | + tr '[a-zA-Z]' '[n-za-mN-ZA-M]' +} + + +# ---------------------------------------------------------------------------- +# Codifica/decodifica um texto utilizando a cifra ROT47 +# Uso: zzrot47 texto +# Ex.: zzrot47 texto secreto # Retorna: E6IE@ D64C6E@ +# zzrot47 E6IE@ D64C6E@ # Retorna: texto secreto +# echo texto secreto | zzrot47 # Retorna: E6IE@ D64C6E@ +# ---------------------------------------------------------------------------- +zzrot47 () +{ + zzzz -h rot47 $1 && return + + # Um tr faz tudo, é uma tradução letra a letra + # Obs.: Os colchetes são parte da tabela, o tr não funcionará no Solaris + zztool multi_stdin "$@" | + tr '!-~' 'P-~!-O' +} + + +# ---------------------------------------------------------------------------- +# Central de alfabetos (romano, militar, radiotelefônico, OTAN, RAF, etc). +# Obs.: Sem argumentos mostra a tabela completa, senão traduz uma palavra. +# +# Tipos reconhecidos: +# +# --militar | --radio | --fone | --otan | --icao | --ansi +# Alfabeto radiotelefônico internacional +# --romano | --latino A B C D E F... +# --royal-navy Marinha Real - Reino Unido, 1914-1918 +# --signalese Primeira Guerra, 1914-1918 +# --raf24 Força Aérea Real - Reino Unido, 1924-1942 +# --raf42 Força Aérea Real - Reino Unido, 1942-1943 +# --raf Força Aérea Real - Reino Unido, 1943-1956 +# --us Alfabeto militar norte-americano, 1941-1956 +# --portugal Lugares de Portugal +# --names Nomes de pessoas, em inglês +# --lapd PolÃcia de Los Angeles (EUA) +# +# Uso: zzalfabeto [--TIPO] [palavra] +# Ex.: zzalfabeto --militar +# zzalfabeto --militar cambio +# ---------------------------------------------------------------------------- +zzalfabeto () +{ + zzzz -h alfabeto $1 && return + + local char letra + + local coluna=1 + local dados="\ +A:Alpha:Apples:Ack:Ace:Apple:Able/Affirm:Able:Aveiro:Alan:Adam +B:Bravo:Butter:Beer:Beer:Beer:Baker:Baker:Bragança:Bobby:Boy +C:Charlie:Charlie:Charlie:Charlie:Charlie:Charlie:Charlie:Coimbra:Charlie:Charles +D:Delta:Duff:Don:Don:Dog:Dog:Dog:Dafundo:David:David +E:Echo:Edward:Edward:Edward:Edward:Easy:Easy:Ãvora:Edward:Edward +F:Foxtrot:Freddy:Freddie:Freddie:Freddy:Fox:Fox:Faro:Frederick:Frank +G:Golf:George:Gee:George:George:George:George:Guarda:George:George +H:Hotel:Harry:Harry:Harry:Harry:How:How:Horta:Howard:Henry +I:India:Ink:Ink:Ink:In:Item/Interrogatory:Item:Itália:Isaac:Ida +J:Juliet:Johnnie:Johnnie:Johnnie:Jug/Johnny:Jig/Johnny:Jig:José:James:John +K:Kilo:King:King:King:King:King:King:Kilograma:Kevin:King +L:Lima:London:London:London:Love:Love:Love:Lisboa:Larry:Lincoln +M:Mike:Monkey:Emma:Monkey:Mother:Mike:Mike:Maria:Michael:Mary +N:November:Nuts:Nuts:Nuts:Nuts:Nab/Negat:Nan:Nazaré:Nicholas:Nora +O:Oscar:Orange:Oranges:Orange:Orange:Oboe:Oboe:Ovar:Oscar:Ocean +P:Papa:Pudding:Pip:Pip:Peter:Peter/Prep:Peter:Porto:Peter:Paul +Q:Quebec:Queenie:Queen:Queen:Queen:Queen:Queen:Queluz:Quincy:Queen +R:Romeo:Robert:Robert:Robert:Roger/Robert:Roger:Roger:Rossio:Robert:Robert +S:Sierra:Sugar:Esses:Sugar:Sugar:Sugar:Sugar:Setúbal:Stephen:Sam +T:Tango:Tommy:Toc:Toc:Tommy:Tare:Tare:Tavira:Trevor:Tom +U:Uniform:Uncle:Uncle:Uncle:Uncle:Uncle:Uncle:Unidade:Ulysses:Union +V:Victor:Vinegar:Vic:Vic:Vic:Victor:Victor:Viseu:Vincent:Victor +W:Whiskey:Willie:William:William:William:William:William:Washington:William:William +X:X-ray/Xadrez:Xerxes:X-ray:X-ray:X-ray:X-ray:X-ray:Xavier:Xavier:X-ray +Y:Yankee:Yellow:Yorker:Yorker:Yoke/Yorker:Yoke:Yoke:York:Yaakov:Young +Z:Zulu:Zebra:Zebra:Zebra:Zebra:Zebra:Zebra:Zulmira:Zebedee:Zebra" + + # Escolhe o alfabeto a ser utilizado + case "$1" in + --militar|--radio|--fone|--telefone|--otan|--nato|--icao|--itu|--imo|--faa|--ansi) + coluna=2 ; shift ;; + --romano|--latino ) coluna=1 ; shift ;; + --royal|--royal-navy ) coluna=3 ; shift ;; + --signalese|--western-front ) coluna=4 ; shift ;; + --raf24 ) coluna=5 ; shift ;; + --raf42 ) coluna=6 ; shift ;; + --raf43|--raf ) coluna=7 ; shift ;; + --us41|--us ) coluna=8 ; shift ;; + --pt|--portugal ) coluna=9 ; shift ;; + --name|--names ) coluna=10 ; shift ;; + --lapd ) coluna=11 ; shift ;; + esac + + if test "$1" + then + # Texto informado, vamos fazer a conversão + # Deixa uma letra por linha e procura seu código equivalente + echo $* | + zzmaiusculas | + sed 's/./&\ + /g' | + while read char + do + letra=$(echo "$char" | sed 's/[^A-Z]//g') + if test "$letra" + then + echo "$dados" | grep "^$letra" | cut -d : -f $coluna + else + echo "$char" + fi + done + else + # Apenas mostre a tabela + echo "$dados" | cut -d : -f $coluna + fi +} + + # ---------------------------------------------------------------------------- # #### A R Q U I V O S @@ -1196,7 +1348,7 @@ # O arquivo existe? zztool arquivo_legivel "$arquivo" || continue - # Remove o famigerado CR \r ^M + # Remove o famigerado CR \r ^M cp "$arquivo" "$tmp" && tr -d '\015' < "$tmp" > "$arquivo" @@ -1384,7 +1536,7 @@ # Um teste rápido para saber se o arquivo tem a palavra antiga, # evitando gravar o temporário desnecessariamente - grep -qs "$antiga" "$arquivo" || continue + grep "$antiga" "$arquivo" >/dev/null 2>&1 || continue # Uma seqüência encadeada de comandos para garantir que está OK cp "$arquivo" "$tmp" && @@ -1474,7 +1626,7 @@ s/[\"']//g # HÃfens no inÃcio do nome são proibidos - s/^-/_/ + s/^-/_/ # Remove acentos y/à áâãäåèéêëìÃîïòóôõöùúûü/aaaaaaeeeeiiiiooooouuuu/ @@ -1652,6 +1804,7 @@ { zzzz -h diffpalavra $1 && return + local esc local tmp1="$ZZTMP.diffpalavra.1.$$" local tmp2="$ZZTMP.diffpalavra.2.$$" local n=$(printf '\a') @@ -1669,7 +1822,7 @@ # Usa o diff para comparar as diferenças e formata a saÃda, # agrupando as palavras para facilitar a leitura do resultado - diff -U 100 "$tmp1" "$tmp2" | + diff -U 100 "$tmp1" "$tmp2" | sed 's/^ /=/' | sed ' # Script para agrupar linhas consecutivas de um mesmo tipo. @@ -1926,10 +2079,10 @@ # Uso: zzlinha [número | -t texto] [arquivo(s)] # Ex.: zzlinha /etc/passwd # mostra uma linha qualquer, aleatória # zzlinha 9 /etc/passwd # mostra a linha 9 do arquivo +# zzlinha -2 /etc/passwd # mostra a penúltima linha do arquivo # zzlinha -t root /etc/passwd # mostra uma das linhas com "root" # cat /etc/passwd | zzlinha # o arquivo pode vir da entrada padrão # ---------------------------------------------------------------------------- -# TODO números negativos (conta à partir do fim) zzlinha () { zzzz -h linha $1 && return @@ -1944,7 +2097,7 @@ fi # Talvez o $1 é o número da linha desejada? - if zztool testa_numero "$1" + if zztool testa_numero_sinal "$1" then n=$1 shift @@ -1956,9 +2109,19 @@ # Nota: Suporte a múltiplos arquivos e entrada padrão (STDIN) for arquivo in "${@:--}" do - sed -n ${n}p "$arquivo" + # O arquivo existe? + zztool arquivo_legivel "$arquivo" || continue + + if [ "$n" -lt 0 ] + then + tail -n ${n#-} "$arquivo" | sed 1q + else + sed -n ${n}p "$arquivo" + fi done else + # TODO: usar zztool multi_stdin e arquivo_legivel + # Se foi informado um padrão (ou nenhum argumento), # primeiro grepa as linhas, depois mostra uma linha # aleatória deste resultado. @@ -1972,6 +2135,33 @@ } +# ---------------------------------------------------------------------------- +# Desordena as linhas de um texto (ordem aleatória) +# Uso: zzshuffle [arquivo(s)] +# Ex.: zzshuffle /etc/passwd # desordena o arquivo de usuários +# cat /etc/passwd | zzlinha # o arquivo pode vir da entrada padrão +# ---------------------------------------------------------------------------- +zzshuffle () +{ + zzzz -h shuffle $1 && return + + local linha + + # Suporte a múltiplos arquivos (cat $@) e entrada padrão (cat -) + cat "${@:--}" | + + # Um número aleatório é colocado no inÃcio de cada linha, + # depois o sort ordena numericamente, bagunçando a ordem + # original. Então os números são removidos. + while read linha + do + echo "$RANDOM $linha" + done | + sort | + cut -d ' ' -f 2- +} + + # ---------------------------------------------------------------------------- # #### C à L C U L O @@ -1980,7 +2170,7 @@ # ---------------------------------------------------------------------------- # Calculadora. -# Os operadores principais são + - / * ^ %, veja outros em "man bc". +# Os operadores principais são + - / * ^ %, veja outros em "man bc". # Obs.: Números fracionados podem vir com vÃrgulas ou pontos: 1,5 ou 1.5. # Uso: zzcalcula número operação número # Ex.: zzcalcula 2,20 + 3.30 # vÃrgulas ou pontos, tanto faz @@ -1991,7 +2181,7 @@ { zzzz -h calcula $1 && return - local parametros=$(zztool multi_stdin $*) + local parametros=$(zztool multi_stdin "$@") # Entrada de números com vÃrgulas ou pontos, saÃda sempre com vÃrgulas echo "scale=2;$parametros" | sed y/,/./ | bc | sed y/./,/ @@ -2170,7 +2360,7 @@ # Uso: zzhora [-r] hh:mm [+|- hh:mm] # Ex.: zzhora 8:30 + 17:25 # preciso somar duas horas! # zzhora 12:00 - agora # quando falta para o almoço? -# zzhora -12:00 + -5:00 # horas negativas!!! +# zzhora -12:00 + -5:00 # horas negativas! # zzhora 1000 # quanto é 1000 minutos? # zzhora -r 5:30 - 8:00 # que horas ir dormir para acordar à s 5:30? # zzhora -r agora + 57:00 # e daqui 57 horas, será quando? @@ -2256,6 +2446,7 @@ [ $mm -le 9 ] && mm=0$mm [ $hh_dia -le 9 ] && hh_dia=0$hh_dia + #TODO: usar um exemplo com horas negativas # Decide como mostrar o resultado para o usuário. # # Relativo: @@ -2416,7 +2607,7 @@ local i n somatoria digito1 digito2 cpf base # Remove pontuação do CPF informado, deixando apenas números - cpf="$(echo $* | tr -d -c 0-9)" + cpf="$(echo $* | tr -d -c 0123456789)" # Extrai os números da base do CPF: # Os 9 primeiros, sem os dois dÃgitos verificadores. @@ -2430,7 +2621,7 @@ return fi - # Apaga os dois último dÃgitos + # Apaga os dois últimos dÃgitos base=${cpf%??} else # Não foi informado nenhum CPF, vamos gerar um escolhendo @@ -2519,7 +2710,7 @@ echo CPF válido else # Boa ação do dia: mostrar quais os verificadores corretos - echo "CPF inválido (-$digito1$digito2)" + echo "CPF inválido (deveria terminar em $digito1$digito2)" fi fi } @@ -2547,7 +2738,7 @@ # apenas com uma máscara numérica maior, devido à quantidade # maior de dÃgitos do CNPJ em relação ao CPF. - cnpj="$(echo $* | tr -d -c 0-9)" + cnpj="$(echo $* | tr -d -c 0123456789)" if [ "$cnpj" ] then @@ -2613,7 +2804,8 @@ then echo CNPJ válido else - echo "CNPJ inválido (-$digito1$digito2)" + # Boa ação do dia: mostrar quais os verificadores corretos + echo "CNPJ inválido (deveria terminar em $digito1$digito2)" fi fi } @@ -2887,9 +3079,9 @@ # zzbovespa () # { # zzzz -h bovespa $1 && return -# +# # local url='http://www.bovespa.com.br/' -# +# # [ "$1" ] || { # $ZZWWWDUMP "$url/Indices/CarteiraP.asp?Indice=Ibovespa" | # sed '/^ *Cód/,/^$/!d' @@ -2913,12 +3105,12 @@ # s/\n/ / # b # } -# +# # /^IBO/ N # N # s/\n/ /g # /^<.-- /d -# +# # :a # s/^\([^0-9]\{1,10\}\)\([0-9][0-9]*\)/\1 \2/ # ta' @@ -2974,6 +3166,7 @@ /^Views$/,$ d /^Vistas$/,$ d /^ #Wikipedia (/d + /^ #Editar Wikipedia /d /^From Wikipedia,/d /^Origem: Wikipédia,/d /^ Jump to: /d @@ -2983,7 +3176,7 @@ /^ Wikipedia does not have an article with this exact name./q s/^\[edit\] // s/^\[editar\] // - + # Guarda URL da página e mostra no final, após Categorias /^ Obtido em "/ { H; d; } /^ Retrieved from "/ { H; d; } @@ -3007,7 +3200,7 @@ # local url='http://www.receita.fazenda.gov.br/Scripts/srf/irpf' # local ano=$1 # local z=${ano#200} -# +# # # Verificação dos parâmetros # [ "$2" ] || { zztool uso irpf; return; } # @@ -3031,14 +3224,14 @@ # zzcep () # { # zzzz -h cep $1 && return -# +# # local r c # local url='http://www.correios.com.br/servicos/cep' # local e="$1" -# +# # # Verificação dos parâmetros # [ "$3" ] || { zztool uso cep; return; } -# +# # c=$(echo "$2"| sed "$ZZSEDURL") # shift # shift @@ -3064,29 +3257,29 @@ # zzdetranpr () # { # zzzz -h detranpr $1 && return -# +# # local url='http://celepar7.pr.gov.br/detran_novo/consultas/veiculos/deb_novo.asp' -# +# # # Verificação dos parâmetros # [ "$1" ] || { zztool uso detranpr; return; } -# +# # # Faz a consulta e filtra o resultado (usando magia negra) # $ZZWWWDUMP "$url?ren=$1" | # sed 's/^ *//' | # sed ' # # Remove linhas em branco # /^$/ d -# +# # # Transforma barra horizontal em linha em branco # s/___*// -# +# # # Apaga a lixarada # 1,/^Data: / d # /^Informa..es do Ve.culo/ d # /^Discrimina..o dos D.bitos/ d # /\[BUTTON\]/,$ d # /^Discrimina..o das Multas/,/^Resumo das Multas/ d -# +# # # Quebra a linha para dados da segunda coluna da tabela # s/Renavam:/@&/ # s/Ano de Fab/@&/ @@ -3157,7 +3350,7 @@ dump=$($ZZWWWDUMP "$url/$tipo/${tipo}_pesquisa.asp" | tr -d \\n | - sed 's/ */ /g ; s/^ //') + sed 's/ */ /g ; s/^ //') # O número do concurso é sempre o primeiro campo numero_concurso=$(echo "$dump" | cut -d '|' -f 1) @@ -3438,6 +3631,7 @@ # Faz a consulta e filtra o resultado zztool eco "$url" $ZZWWWHTML "$url" | + zztool texto_em_iso | grep -i $opcao_grep "$*" | sed -n '[EMAIL PROTECTED]<LI><A HREF=\([^>]*\)> *\([^ ].*\)</A>@\1: [EMAIL PROTECTED]' } @@ -3461,7 +3655,7 @@ [ "$1" ] || { zztool uso whoisbr; return; } # Faz a consulta e filtra o resultado - $ZZWWWDUMP "$url?qr=$dominio" | + $ZZWWWDUMP "$url?qr=$dominio" | sed ' s/^ *// 1,/^%/d @@ -3563,7 +3757,7 @@ [ "$1" ] && sites="$1" # Yahoo - if zztool grep_var y $sites + if zztool grep_var y "$sites" then url='http://br.news.yahoo.com/tecnologia/linux' echo @@ -3575,16 +3769,14 @@ s,</a>.*,, s/<[^>]*>//gp } - /clearfix/ { - n - s/<[^>]*>//gp - }' | + /^ <a href=/ s/<[^>]*>//gp' | sed 's/^[[:blank:]]*//' | + zztool texto_em_utf8 | $limite fi # Viva o Linux - if zztool grep_var v $sites + if zztool grep_var v "$sites" then url='http://www.vivaolinux.com.br' echo @@ -3595,11 +3787,12 @@ $ZZWWWHTML "$url/index.rdf" | sed -n '1,/<item>/d;[EMAIL PROTECTED]<title>\(.*\)</title>@[EMAIL PROTECTED]' | + zztool texto_em_utf8 | $limite fi # Cipsga - if zztool grep_var c $sites + if zztool grep_var c "$sites" then url='http://www.cipsga.org.br' echo @@ -3613,35 +3806,39 @@ fi # Br Linux - if zztool grep_var b $sites + if zztool grep_var b "$sites" then url='http://br-linux.org/feed/' echo zztool eco "* BR Linux ($url):" $ZZWWWHTML "$url" | sed -n '1,/<item>/d ; s/.*<title>// ; s@</title>@@p' | + sed 's/̶[01];/"/g' | + zztool texto_em_utf8 | $limite fi # UnderLinux - if zztool grep_var u $sites + if zztool grep_var u "$sites" then url='http://feeds.feedburner.com/underlinux' echo zztool eco "* UnderLinux ($url):" $ZZWWWHTML "$url" | sed -n '1,/<item>/d ; s/.*<title>// ; s@</title>@@p' | + zztool texto_em_utf8 | $limite fi # NotÃcias Linux - if zztool grep_var n $sites + if zztool grep_var n "$sites" then url='http://www.noticiaslinux.com.br' echo zztool eco "* NotÃcias Linux ($url):" $ZZWWWHTML "$url" | sed -n '/<[hH]3>/{s/<[^>]*>//g;s/^[[:blank:]]*//g;p;}' | + zztool texto_em_iso | $limite fi } @@ -3674,7 +3871,7 @@ [ "$1" ] && sites="$1" # Freshmeat - if zztool grep_var f $sites + if zztool grep_var f "$sites" then url='http://freshmeat.net' echo @@ -3685,7 +3882,7 @@ fi # Slashdot - if zztool grep_var s $sites + if zztool grep_var s "$sites" then url='http://slashdot.org' echo @@ -3697,7 +3894,7 @@ fi # Newsforge - if zztool grep_var n $sites + if zztool grep_var n "$sites" then url='http://www.newsforge.com' echo @@ -3709,7 +3906,7 @@ fi # Linux Today - if zztool grep_var t $sites + if zztool grep_var t "$sites" then url='http://linuxtoday.com/backend/biglt.rss' echo @@ -3720,7 +3917,7 @@ fi # LWN - if zztool grep_var w $sites + if zztool grep_var w "$sites" then url='http://lwn.net/Articles' echo @@ -3731,7 +3928,7 @@ fi # OS News - if zztool grep_var o $sites + if zztool grep_var o "$sites" then url='http://osnews.com' echo @@ -3770,18 +3967,19 @@ [ "$1" ] && sites="$1" # LinuxSecurity Brasil - if zztool grep_var b $sites + if zztool grep_var b "$sites" then url='http://www.linuxsecurity.com.br/share.php' echo zztool eco "* LinuxSecurity Brasil ($url):" $ZZWWWHTML "$url" | sed -n '/item/,$ [EMAIL PROTECTED]<title>\(.*\)</title>@[EMAIL PROTECTED]' | + zztool texto_em_iso | $limite fi # Linux Security - if zztool grep_var s $sites + if zztool grep_var s "$sites" then url='http://www.linuxsecurity.com/linuxsecurity_advisories.rdf' echo @@ -3792,7 +3990,7 @@ fi # CERT/CC - if zztool grep_var c $sites + if zztool grep_var c "$sites" then url='http://www.us-cert.gov/channels/techalerts.rdf' echo @@ -3803,7 +4001,7 @@ fi # Linux Today - Security - if zztool grep_var t $sites + if zztool grep_var t "$sites" then url='http://linuxtoday.com/security/index.html' echo @@ -3814,7 +4012,7 @@ fi # Security Focus - if zztool grep_var f $sites + if zztool grep_var f "$sites" then url='http://www.securityfocus.com/bid' echo @@ -3847,6 +4045,7 @@ local url limite distros local n=5 + local ano=$(date '+%Y') local distros='debian fedora freebsd gentoo mandriva slackware suse ubuntu' limite="sed ${n}q" @@ -3854,7 +4053,7 @@ [ "$1" ] && distros="$(echo $* | zzminusculas)" # Debian - if zztool grep_var debian $distros + if zztool grep_var debian "$distros" then url='http://www.debian.org' echo @@ -3869,11 +4068,11 @@ fi # Slackware - if zztool grep_var slackware $distros + if zztool grep_var slackware "$distros" then echo zztool eco '** Atualizações Slackware' - url='http://www.slackware.com/security/list.php?l=slackware-security&y=2005' + url="http://www.slackware.com/security/list.php?l=slackware-security&y=$ano" echo "$url" $ZZWWWDUMP "$url" | sed ' @@ -3884,7 +4083,7 @@ fi # Gentoo - if zztool grep_var gentoo $distros + if zztool grep_var gentoo "$distros" then echo zztool eco '** Atualizações Gentoo' @@ -3902,7 +4101,7 @@ fi # Mandriva - if zztool grep_var mandriva $distros + if zztool grep_var mandriva "$distros" then echo zztool eco '** Atualizações Mandriva' @@ -3919,7 +4118,7 @@ fi # Suse - if zztool grep_var suse $distros + if zztool grep_var suse "$distros" then echo zztool eco '** Atualizações Suse' @@ -3931,7 +4130,7 @@ fi # Fedora - if zztool grep_var fedora $distros + if zztool grep_var fedora "$distros" then echo zztool eco '** Atualizações Fedora' @@ -3943,7 +4142,7 @@ fi # FreeBSD - if zztool grep_var freebsd $distros + if zztool grep_var freebsd "$distros" then echo zztool eco '** Atualizações FreeBSD' @@ -3960,7 +4159,7 @@ fi # Ubuntu - if zztool grep_var ubuntu $distros + if zztool grep_var ubuntu "$distros" then url='http://www.ubuntu.com/taxonomy/term/2/0/feed' echo @@ -4048,7 +4247,7 @@ # # local padrao=$(echo "$*" | sed "$ZZSEDURL") # local url=http://letssingit.com/cgi-exe/am.cgi -# +# # # Verificação dos parâmetros # [ "$1" ] || { zztool uso letrademusica; return; } # @@ -4074,10 +4273,10 @@ # # local a c h # local url='http://tudoparana.globo.com/gazetadopovo/cadernog' -# +# # # Verificação dos parâmetros # [ "$1" ] || { zztool uso tv; return; } -# +# # h=$(echo $2 | sed 's/^\(..\).*/\1/;s/[^0-9]//g') # h="($h|$((h+1))|$((h+2)))" # h=$(echo $h | sed 's/24/00/;s/25/01/;s/26/02/;s/\<[0-9]\>/0&/g;[EMAIL PROTECTED](|)[EMAIL PROTECTED]&@g') @@ -4124,7 +4323,7 @@ grep '\*\*\*\*' | sed ' s/more info from.*// - s/\[go\.gif\]// + s/\[[a-z0-9]*\.gif\]// s/ *$// s/^ *\*\** *//' } @@ -4162,7 +4361,7 @@ # Extrai o nome do arquivo no site do dicionário wav_file=$( $ZZWWWHTML "$url?va=$palavra" | - sed -n "/.*audio.pl?\([a-z0-9]*\.wav\)=$palavra.*/{s//\1/p;q;}") + sed -n "/.*audio.pl?\([a-z0-9]*\.wav\)=$palavra.*/{s//\1/p;q;}") # Ops, não extraiu nada if test -z "$wav_file" @@ -4174,7 +4373,7 @@ # O nome da pasta é a primeira letra do arquivo (/a/apple001.wav) # Ou "number" se iniciar com um número (/number/9while01.wav) wav_dir=$(echo $wav_file | cut -c1) - echo $wav_dir | grep -qs '[0-9]' && wav_dir='number' + echo $wav_dir | grep '[0-9]' >/dev/null && wav_dir='number' # Compõe a URL do arquivo e salva-o localmente (cache) wav_url="$url2/$wav_dir/$wav_file" @@ -4376,13 +4575,13 @@ # local subj=zznextel # local from="$1" # local to="$2" -# +# # # Verificação dos parâmetros # [ "$3" ] || { zztool uso nextel; return; } -# +# # shift; shift # msg=$(echo "$*" | sed "$ZZSEDURL") -# +# # echo "to=$to&from=$from&subject=$subj&message=$msg&count=0&Enviar=Enviar" | # $ZZWWWPOST "$url" | # sed '1,/^ *CENTRAL/d ; s/.*Individual/ / ; N ; q' @@ -4417,10 +4616,8 @@ zzzz -h dicbabelfish $1 && return local padrao - local url='http://babelfish.altavista.com/babelfish/tr' - local extra='ienc=iso-8859-1&doit=done&tt=urltext&intl=1' - local ini='^.*<div style=padding[^>]*>' - local fim='^<\/div>' + local url='http://babelfish.yahoo.com/translate_txt' + local extra='ei=UTF-8&eo=UTF-8&doit=done&fr=bf-home&intl=1&tt=urltext' local lang=en_pt # Verificação dos parâmetros @@ -4437,16 +4634,12 @@ fi padrao=$(echo "$*" | sed "$ZZSEDURL") - $ZZWWWHTML "$url?$extra&urltext=$padrao&lp=$lang" | - sed -n " - /$ini/,/$fim/ { - /$fim/d - /^$/d - /$ini/ { - s/<[^>]*>//g - s/^...//p - } - }" + $ZZWWWHTML "$url?$extra&trtext=$padrao&lp=$lang" | + sed -n ' + /<div id="result">/ { + s/<[^>]*>//g + s/^ *//p + }' } @@ -4482,7 +4675,8 @@ /SEARCH RESULT/,/<\/td>/!d s/^[$tab ]*// s/<[^>]*>//g - /^$/d" + /^$/d" | + zztool texto_em_iso } @@ -4515,6 +4709,8 @@ /$ini/,/$fim/ { /$ini/d /$fim/d + /Duplo clique nas palavras/d + /^ *$/d p }" | sed '
signature.asc
Description: OpenPGP digital signature