Hallo, um mir das Übernehmen der Pakete etwas leichter zu machen versuche ich mich gerade etwas in AWK, hänge aber ein bischen. Ich habe mit rpm -qa alle auf dem SuSE 10.1 installierten Pakete in ein File pipen lassen und möchte nun die gleichen Pakete wieder im SUSE 10.2 einspielen, natüprlich in anderen Versionen. Dadurch würde ich gerne die Liste dem AWK zu fressen geben, die letzten 2 Felder wegschneiden und in ein andere File pipen lassen. Wie ich an die Anzahl der zu druckenden Felder komme weiß ich, ein NF-2 ist das Mittel zum Ziel. Nur wie bringe ich AWK jetzt bei das er das davor drucken soll? Die Einträge in der Liste sehen so aus: ant-apache-resolver-1.6.5-17 Die Versionsnummer hinten dran (immer 2 Felder) soll vergeschnippelt werden so das im neuen File dann nur "ant-apache-resolver-" steht. Das gebe ich dann wieder nem kleinen Shell-Script zu fressen und das installiert mir das ganze. Weiß jemand wie ich das im AWK umsetzen kann? Oder kann das sed? Gruß Daniel -- Daniel Spannbauer Systembetreuung marco Systemanalyse und Entwicklung GmbH Tel +49 8333 9233-27 Fax -11 Auf der Wies 8, D 87727 Babenhausen Mobil +49 171 4033220 http://www.marco.de/ Email ds@marco.de Geschäftsführer Martin Reuter HRB 68255 Amtsgericht München -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Dienstag, 26. Juni 2007 schrieb Daniel Spannbauer:
Hallo,
um mir das Übernehmen der Pakete etwas leichter zu machen versuche ich mich gerade etwas in AWK, hänge aber ein bischen. Ich habe mit rpm -qa alle auf dem SuSE 10.1 installierten Pakete in ein File pipen lassen und möchte nun die gleichen Pakete wieder im SUSE 10.2 einspielen, natüprlich in anderen Versionen. Dadurch würde ich gerne die Liste dem AWK zu fressen geben, die letzten 2 Felder wegschneiden und in ein andere File pipen lassen. Wie ich an die Anzahl der zu druckenden Felder komme weiß ich, ein NF-2 ist das Mittel zum Ziel. Nur wie bringe ich AWK jetzt bei das er das davor drucken soll?
Die Einträge in der Liste sehen so aus: ant-apache-resolver-1.6.5-17
Die Versionsnummer hinten dran (immer 2 Felder) soll vergeschnippelt werden so das im neuen File dann nur "ant-apache-resolver-" steht. Das gebe ich dann wieder nem kleinen Shell-Script zu fressen und das installiert mir das ganze.
Weiß jemand wie ich das im AWK umsetzen kann? Oder kann das sed?
warum denn awk, wie wärs mit: rpm -qa | sed -e 's/[-.0-9]*$//' Problem nur, nicht alle Namen, die man mit rpm -qa erhält enden auf eine Ziffer Bye Jürgen -- Dr.rer.nat. Juergen Vollmer, Viktoriastrasse 15, D-76133 Karlsruhe Tel: +49(721) 92 04 87 1 Fax: +49(721) 92 04 87 2 Juergen.Vollmer@informatik-vollmer.de www.informatik-vollmer.de Internet-Telefonie: www.skype.com Benutzer: juergen.vollmer
Dr. Jürgen Vollmer wrote:
Am Dienstag, 26. Juni 2007 schrieb Daniel Spannbauer:
[...]
Die Einträge in der Liste sehen so aus: ant-apache-resolver-1.6.5-17
Die Versionsnummer hinten dran (immer 2 Felder) soll vergeschnippelt werden so das im neuen File dann nur "ant-apache-resolver-" steht. Das gebe ich dann wieder nem kleinen Shell-Script zu fressen und das installiert mir das ganze.
Weiß jemand wie ich das im AWK umsetzen kann? Oder kann das sed?
warum denn awk, wie wärs mit:
rpm -qa | sed -e 's/[-.0-9]*$//'
Problem nur, nicht alle Namen, die man mit rpm -qa erhält enden auf eine Ziffer
Warum nicht einfach: rpm -qa --queryformat '%{NAME}\n' Cheers, Th. -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Die, 26 Jun 2007, Daniel Spannbauer schrieb: [.. rpm -qa generierte Paketliste ..]
Dadurch würde ich gerne die Liste dem AWK zu fressen geben, die letzten 2 Felder wegschneiden und in ein andere File pipen lassen. Wie ich an die Anzahl der zu druckenden Felder komme weiß ich, ein NF-2 ist das Mittel zum Ziel. Nur wie bringe ich AWK jetzt bei das er das davor drucken soll?
_Was_ davor drucken?
Weiß jemand wie ich das im AWK umsetzen kann? Oder kann das sed?
rpm -qa --queryformat 'was davor %{NAME} und danach\n' ist einfacher ;) Aber da nach awk gefragt wurde, z.B. so: rpm -qa | awk ' BEGIN { FS="-"; OFS="-"; } { $(NF-1)=""; ## vorletztes Feld auf "" setzen $NF=""; ## letztes Feld auf "" setzen sub("--$",""); ## letzte 2 Feldtrenner löschen print "was davor " $0 " und danach"; ## Ausgabe }' Man könnte auch über die Felder iterieren: rpm -qa | awk -F'-' '{ printf "was davor "; for( i=1; i < (NF-1); i++ ) { printf "%s", $i; if( i < NF-2 ) { printf "-"; }; } printf " was danach\n"; }' HTH, HAND -dnh -- "What I saw in the Xerox PARC technology was the caveman interface, you point and you grunt." -- Eben Moglen -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
David Haller wrote:
Hallo,
Am Die, 26 Jun 2007, Daniel Spannbauer schrieb: [.. rpm -qa generierte Paketliste ..]
Dadurch würde ich gerne die Liste dem AWK zu fressen geben, die letzten 2 Felder wegschneiden und in ein andere File pipen lassen. Wie ich an die Anzahl der zu druckenden Felder komme weiß ich, ein NF-2 ist das Mittel zum Ziel. Nur wie bringe ich AWK jetzt bei das er das davor drucken soll?
_Was_ davor drucken?
Weiß jemand wie ich das im AWK umsetzen kann? Oder kann das sed?
rpm -qa --queryformat 'was davor %{NAME} und danach\n'
ist einfacher ;)
Aber da nach awk gefragt wurde, z.B. so:
rpm -qa | awk ' BEGIN { FS="-"; OFS="-"; } { $(NF-1)=""; ## vorletztes Feld auf "" setzen $NF=""; ## letztes Feld auf "" setzen sub("--$",""); ## letzte 2 Feldtrenner löschen print "was davor " $0 " und danach"; ## Ausgabe }'
Man könnte auch über die Felder iterieren:
rpm -qa | awk -F'-' '{ printf "was davor "; for( i=1; i < (NF-1); i++ ) { printf "%s", $i; if( i < NF-2 ) { printf "-"; }; } printf " was danach\n"; }'
HTH, HAND -dnh
Danke danke, reicht schon :) Sehe schon das ich mich wohl mal mehr mit Scripten befassen muss. Danke erstmal, hat mir sehr geholfen. Gruß Daniel -- Daniel Spannbauer Systembetreuung marco Systemanalyse und Entwicklung GmbH Tel +49 8333 9233-27 Fax -11 Auf der Wies 8, D 87727 Babenhausen Mobil +49 171 4033220 http://www.marco.de/ Email ds@marco.de Geschäftsführer Martin Reuter HRB 68255 Amtsgericht München -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
participants (5)
-
Daniel Spannbauer
-
David Haller
-
Dr. Jürgen Vollmer
-
Thomas Hertweck
-
Torsten Foertsch