shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Separar pacote - versao de uma lista


From: Fabricio Lopes de Souza
Subject: Separar pacote - versao de uma lista
Date: Wed, 11 Jan 2006 08:11:04 -0200

Estou tentando fazer um script que , de uma lista com pacotes , separe
por nome de programa e versao .
a lista eh mais ou menos essa :
[lista]
iputils-20020927-11.30.1
irda-utils-0.9.15-1
isdn4k-utils-3.1-76
jakarta-regexp-1.2-12
jfsutils-1.1.2-2
jpackage-utils-1.5.38-1jpp_5rh
jwhois-3.2.2-1
kbd-1.08-10.2
kdebase-3.1.3-5.9
kdelibs-3.1.3-6.10
kernel-2.4.21-15.EL
kernel-2.4.21-27.0.4.EL
kernel-2.4.21-32.0.1.EL
kernel-pcmcia-cs-3.1.31-13
kernel-smp-2.4.21-15.EL
kernel-smp-2.4.21-27.0.4.EL
kernel-smp-2.4.21-32.0.1.EL
kernel-utils-2.4-8.37.12
krb5-libs-1.2.7-47
krb5-workstation-1.2.7-47
krbafs-1.1.1-11
krbafs-utils-1.1.1-11
kudzu-1.1.22.11-1
[/code]


o codigo que eu fiz ateh agora foi esse

[script]
lista1="/Fabricio/scripts/s.pi7"
lista2="/Fabricio/scripts/s.pi10"
tmp1="/tmp/lista1"
tmp2="/tmp/lista2"

while read program ; do
   let i=2
   for field in "1" "1,2" "1,2,3" ; do
      version=$(echo $program | cut -d"-" -f${i})
      version=$(echo $version |  sed 's/[a-zA-Z]\{6,\}.*//g' )
      version=$(echo $version | sed s/[^0-9]//g )
      version=$(echo $version | sed s/\./1234567/g )
         #if [[ $version == [^A-Za-z]*[0-9]* ]] ; then
         if [[ ${#version} -ge 1 ]] ; then
            version=$(echo $program | cut -d"-" -f${i}-9)
            program=$(echo $program | cut -d"-" -f"$field")
            echo "$program $version" | awk '{ printf "| %30-s --|--
%18s |\n",$1,$2}'
            grep -v $program $tmp1 > $tmp2
            mv $tmp2 $tmp1
            flag=1
            break
         fi
   done
done < $lista1
[/script]

tentando explicar :
primeiramente eu jah chego a conclusao que o nome do pacote é no
mínimo o primeiro campo com separador "-" e , logicamente , a versão é
do segundo campo para frente
condicoes o campo ser versao :
conter "."
conter mais de 1 numero
porem :
existem pacotes com numeros no nome

o que esta sendo complicado é definir o que é um campo de versão ,
pois depois de achar este campo , todos os seguintes fazem parte da
versão !


alguem tem alguma ideia ou ajuda ?? :)


reply via email to

[Prev in Thread] Current Thread [Next in Thread]