forum.PCLinuxOS.org.pl Strona Główna forum.PCLinuxOS.org.pl
Polskie forum użytkowników PCLinuxOS

RegulaminRegulamin FAQFAQ  SzukajSzukaj  UżytkownicyUżytkownicy  GrupyGrupy
RejestracjaRejestracja  ZalogujZaloguj


Poprzedni temat «» Następny temat
skrypt do przerobienia listy pakietow
Autor Wiadomość
siamer 
Moderator


Distro: ZEN-mini
Kernel: nowy
Procesor: Intel Core 2 2,2GHz
Płyta główna: NVIDIA
Karta graficzna: nVidia G102M 512MB
Karta dźwiękowa: MCP79 hda
RAM: 4GB
Laptop
Pomógł: 36 razy
Posty: 781
Wysłany: Wto 09 Lut, 2010 02:39   skrypt do przerobienia listy pakietow

Witam.

W skryptach jestem zielony wiec mam pewnien problem. Liste pakietow z pewnego system znalazlem (tak jak wczesniej ktos napisal) w /var/... skopiowalem sobie na pulpit. Teraz chcialbym zainstaloawac te pakiety na innym systemie ale wersje pakietow sie roznia... Jak moge uzyskac taka postac pakietow np.
Lista pakietow z /var/ wyglada nastepujaco
acl-0.1pclos2009
acpi-10pclos2009
a pakietow tych jest ponad 1000 :roll:
Jak zmienic postac pakietow w pliku tekstowym (wszystkich naraz) aby zostala usunieta cala koncowka (znaczy -0.1pclos2009) i zeby otrzymaj nast. postac:
acl
acpi

Ma ktos jakis pomysl ? Pewnie jednym poleceniem mozna to zrobic ale ja nie wiem jak :neutral: bylbym bardzo wdzieczny za pomoc...

Pozdrawiam...
siamer
_________________
każdy człowiek umrze, ale nie każdy naprawde żyje... !!

Ostatnio zmieniony przez siamer Wto 09 Lut, 2010 02:40, w całości zmieniany 1 raz  
 
 
 
KrzysieQ 
Moderator
Samozwańczy Administrator


Distro: PCLinuxOS 2010
Procesor: Intel Core i5
Płyta główna: Gigabyte GA-P55A-UD3
Karta graficzna: GeForce 8400 GT
Karta dźwiękowa: Intel HD Audio
RAM: 4GB DDR3
Komputer stacjonarny
Pomógł: 43 razy
Posty: 844
Wysłany: Wto 09 Lut, 2010 09:59   

Tak na szybko skrobniete, ale działa:

Kod:
#!/bin/bash
for s1 in `cat $1`
do
cuts=`awk -v a="$s1" -v b="-" 'BEGIN{print index(a,b)}'`
cut_start=`awk -v a="$s1" -v c="$cuts" 'BEGIN{print substr(a, 1, c-1)}'`
echo $cut_start >> $1_filtered
done


Zasada działania dość prosta: czytamy słowo po słowie z pliku wejściowego, lokalizujemy znak "-" i wypisujemy od początku do tego znaku (bez niego)

a potem prawa:
Kod:
chmod +x skrypt.sh


a uruchamiasz tak:
Kod:
./skrypt.sh plik_z_pakietami


a w wyniku dostaniesz plik: plik_z_pakietami_filtered
 
 
siamer 
Moderator


Distro: ZEN-mini
Kernel: nowy
Procesor: Intel Core 2 2,2GHz
Płyta główna: NVIDIA
Karta graficzna: nVidia G102M 512MB
Karta dźwiękowa: MCP79 hda
RAM: 4GB
Laptop
Pomógł: 36 razy
Posty: 781
Wysłany: Wto 09 Lut, 2010 16:06   

dzieki. prawie dobrze dziala... jest tylko jeden problem. pliki np.:
gnome-applets-2.28.0-4pclos2010.i586.rpm
gnome-audio-2.22.2-2pclos2010.noarch.rpm
gnome-control-center-2.28.1-3pclos2010.i586.rpm
gnome-desktop-2.28.2-2pclos2010.i586.rpm
gnome-desktop-common-2.28.2-2pclos2010.i586.rpm
gnome-doc-utils-0.18.1-1pclos2010.noarch.rpm
gnome-games-2.28.1-1pclos2010.i586.rpm
gnome-icon-theme-2.28.0-1pclos2010.noarch.rpm
gnome-keyring-2.28.2-2pclos2010.i586.rpm
gnome-libs-1.4.2-19pclos2007.i586.rpm
gnome-media-2.28.1-2pclos2010.i586.rpm
gnome-menus-2.28.0.1-1pclos2010.i586.rpm
gnome-mime-data-2.18.0-1pclos2007.i586.rpm
gnome-mount-0.8-2pclos2007.i586.rpm
gnome-panel-2.28.0-5pclos2010.i586.rpm
gnome-power-manager-2.28.0-3pclos2010.i586.rpm
gnome-ppp-0.3.23-2pclos2007.i586.rpm
gnome-print-0.37-10pclos2007.i586.rpm
gnome-python-2.28.0-4pclos2010.i586.rpm
gnome-python-applet-2.28.0-4pclos2010.i586.rpm
gnome-python-bonobo-2.28.0-4pclos2010.i586.rpm
gnome-python-canvas-2.28.0-4pclos2010.i586.rpm
przerobil mi na:
gnome
gnome
gnome
gnome
gnome
gnome
gnome
gnome
gnome
gnome
gnome
gnome
gnome
gnome
gnome
gnome
gnome
gnome
gnome
gnome

dasz rade cos z tym zrobic ?

pozdrawiam...
_________________
każdy człowiek umrze, ale nie każdy naprawde żyje... !!

 
 
 
KrzysieQ 
Moderator
Samozwańczy Administrator


Distro: PCLinuxOS 2010
Procesor: Intel Core i5
Płyta główna: Gigabyte GA-P55A-UD3
Karta graficzna: GeForce 8400 GT
Karta dźwiękowa: Intel HD Audio
RAM: 4GB DDR3
Komputer stacjonarny
Pomógł: 43 razy
Posty: 844
Wysłany: Wto 09 Lut, 2010 21:06   

A mówiłem, że pisane na szybko :)
Spróbuj wersję 0.2:

Kod:
#!/bin/bash
for s1 in `cat $1`
do
        cut=`awk -v a="$s1" 'BEGIN {
                                e = match(a, /-[0-9]/)
                                print substr(a, 1, e-1)
                                }'`
        echo $cut >> $1_filtered
done
 
 
siamer 
Moderator


Distro: ZEN-mini
Kernel: nowy
Procesor: Intel Core 2 2,2GHz
Płyta główna: NVIDIA
Karta graficzna: nVidia G102M 512MB
Karta dźwiękowa: MCP79 hda
RAM: 4GB
Laptop
Pomógł: 36 razy
Posty: 781
Wysłany: Wto 09 Lut, 2010 21:46   

ale za to tym mnie zagieles :P dziala super !
dzieki za pomoc :)

pozdrawiam...
siamer
_________________
każdy człowiek umrze, ale nie każdy naprawde żyje... !!

 
 
 
KrzysieQ 
Moderator
Samozwańczy Administrator


Distro: PCLinuxOS 2010
Procesor: Intel Core i5
Płyta główna: Gigabyte GA-P55A-UD3
Karta graficzna: GeForce 8400 GT
Karta dźwiękowa: Intel HD Audio
RAM: 4GB DDR3
Komputer stacjonarny
Pomógł: 43 razy
Posty: 844
Wysłany: Sro 10 Lut, 2010 12:10   

Działa identycznie jak poprzednik tylko nie szuka pierwszego wystąpienia pauzy, a wyrażenia pokroju pauza i cyfra które na moje oko oddziela nazwę pakietu od numeru wersji.

Mile widziane poprawki i udoskonalenia innych :)

Dla potomnych, instalacja z takiego pliku:
Kod:
apt-get install `cat lista_filtered`
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Template FISubSilver v 0.3 modified by Nasedo. Done by Forum Wielotematyczne