Sortier Problem

schwedenmann

schwedenmann

Foren Gott
Hallo

ich bin kein script kiddy, also Nachsicht.

Folgendes Problem

Ich möchte in einem Backupscript noch die installierten Paket (hier Debian-Sid) als separate Datei in einem lesbaren Format speichern.

Im script funktionoert ja chroot nciht? oder doch, also hab ich mir die Datei

/var/log/apt/extened_states perr
cat /var/lib/apt/extended_states | sort | uniq | tail -n +4 > /share/sortliste.txt in eine lesbare alphabetische Reihenfolge gebracht.

das ganze ist zwar für mcih braucbar, aber es solte doch besser gehen

die Datei /var/lib/apt/apt/extended_states sieht so aus

Package: libklibc
Auto-Installed: 1

Package: klibc-utils
Auto-Installed: 1

Package: udev
Auto-Installed: 0

Package: libvolume-id0
Auto-Installed: 1

Package: libkeyutils1
Auto-Installed: 1

mit dem obigee Befehl ..cat ..
wird eine alphabetische Liste mit den Einträgen
Package: libklibc
Auto-Installed: 1

Package: klibc-utils
Auto-Installed: 1

Package: udev
Auto-Installed: 0

Package: libvolume-id0
Auto-Installed: 1

Package: libkeyutils1
Auto-Installed: 1

Package:udev
...


erzeugt


Gibt es eine Möglichkeit die obege Date (/var/lib/apt/extended_statesi so auszugeben

Package:udev Autoinstalled:0
Package: .... Autoinstalled 1

wobei die Package-Spalte für die alphabetische Liste der primäre Faktor ist.

mfg
schwedenmann


P.S.
Sorry wenn die Frage in die dummy Schublade wandert, aber ich kann weder programmieren, noch nutze ich scripting, ich weiche dann eher auf Alternativen aus, z.B. zum Umbennnen von files nutze ich mmv, anstatt ein script mit Schleife.
 
Abend,

versuchs mal hiermit:
Code:
awk '{ 
 if ($1 ~ "Package") { 
  printf ($1" "$2" "); getline; print($1" "$2) 
 } 
}' /var/lib/apt/extended_statesi

mfg
HeadCrash
 
Sortieren

Hallo


ich hab befürchtet das es nicht so einfcah ist.

Dein befehl bringt folgendes ergebnis
Package: consolekit Auto-Installed: 1
Package: plasma-dataengines-workspace Auto-Installed: 1
Package: plasma-scriptengines Auto-Installed: 1
Package: libqtruby4shared2 Auto-Installed: 1
Package: libplasma-ruby1.8 Auto-Installed: 1
Package: plasma-widget-lancelot Auto-Installed: 1
Package: liblancelot0 Auto-Installed: 1
Package: oxygencursors Auto-Installed: 1
Package: libggadget-qt-1.0-0 Auto-Installed: 1
Package: libkde4-ruby1.8 Auto-Installed: 1
Package: plasma-scriptengine-ruby Auto-Installed: 1
Package: libqt4-ruby1.8 Auto-Installed: 1
Package: plasma-widgets-workspace Auto-Installed: 1
Package: google-gadgets-common Auto-Installed: 1
Package: plasma-dataengines-addons Auto-Installed: 1
Package: google-gadgets-gst Auto-Installed: 1
Package: plasma-scriptengine-webkit Auto-Installed: 1
Package: libsmokeplasma2 Auto-Installed: 1
Package: libeet1 Auto-Installed: 1
Package: plasma-scriptengine-googlegadgets Auto-Installed: 1
Package: google-gadgets-xul Auto-Installed: 1
Package: libqzion0 Auto-Installed: 1
Package: plasma-scriptengine-qedje Auto-Installed: 1
Package: libplasma-ruby Auto-Installed: 1
Package: kdebase-workspace-data Auto-Installed: 1
Package: google-gadgets-qt Auto-Installed: 1
Package: plasma-scriptengine-superkaramba Auto-Installed: 1
Package: libxklavier12 Auto-Installed: 1
Package: libggadget-1.0-0 Auto-Installed: 1
Package: plasma-scriptengine-javascript Auto-Installed: 1
Package: libsmokeqt4-2 Auto-Installed: 1
Package: plasma-scriptengine-python Auto-Installed: 1
Package: libsmokekde4-2 Auto-Installed: 1
Package: kaboom Auto-Installed: 1
Package: libqedje0 Auto-Installed: 1
Package: python-kde4 Auto-Installed: 1
Package: libkonq5-templates Auto-Installed: 1
Package: libkadm5srv6 Auto-Installed: 1
Package: libsub-name-perl Auto-Installed: 1
Package: libhamcrest-java Auto-Installed: 1
Package: fxload Auto-Installed: 1
Package: libimage-exiftool-perl Auto-Installed: 1
Package: cryptsetup Auto-Installed: 1
Package: cups-driver-gutenprint Auto-Installed: 1
Package: libgutenprint2 Auto-Installed: 1
Package: libvtk5.2 Auto-Installed: 1
Package: apache2.2-bin Auto-Installed: 1
Package: libbluetooth3 Auto-Installed: 1
Package: python-xdg Auto-Installed: 1
Package: libboost-regex1.38.0 Auto-Installed: 1
Package: libboost-program-options1.38.0 Auto-Installed: 1
Package: erlang-esdl Auto-Installed: 1
Package: libboost-date-time1.38.0 Auto-Installed: 1
Nathan:/home/joerg#

Sory mein Fehler, es sollte so aussehen, der Name
Package :xy sollte für die Sortierung primär sein!

Package:libboost-programm-options1.38.0 Auto-Installed: 1
Package libboost-regex1.38.0 Auto-Installed: 1


Was mir auffällt, es fehlen alle Einträge mit
Package... Auto-Installed:0

mfg
schwedenmann

P.S. Jetzt weiß ich wenigstens das ich awk, oder gar perl für das Problem nutzen solte.
 
Hmmm,

bei dem Beispiel Textshnipsel bringt er die "Autoinstalled 0" mit

cat statesi
sckage: libklibc
Auto-Installed: 1

Package: klibc-utils
Auto-Installed: 1

Package: udev
Auto-Installed: 0

Package: libvolume-id0
Auto-Installed: 1

Package: libkeyutils1
Auto-Installed: 1

Code:
cat statesi | awk '{ if ($1 ~ "Package") {printf ($1" "$2" "); getline; print($1" "$2) }}' | sort

Package: klibc-utils Auto-Installed: 1
Package: libkeyutils1 Auto-Installed: 1
Package: libvolume-id0 Auto-Installed: 1
Package: udev Auto-Installed: 0



Was die Sortierung angeht, hab ich irgendwie verpennt, sollte aber ein " | sort" am Ende erledigen.

*EDIT*

Welches awk verwendest du, debin kommt glaub ich per default nicht mit nem gawk daher.
 
Zuletzt bearbeitet:
Wenn die Eingabedatei "sauber ist, d.h. immer eine "Package", eine "Auto-Install" und eine Leerzeile aufeinander folgen, sollte ein einfaches
Code:
paste - - - </var/lib/apt/extended_states | sort
schon ziemlich weit kommen. Alternativ könnte man auch mit einem kleinen sed-Skript, etwa
Code:
sed -e '/^$/d' -e '/Package/N;s/\n/ /' </var/lib/apt/extended_states | sort
zunächst die Leerzeilen entfernen, dann die "Package"-Zeilen mit den jeweils darauffolgenden zusammenfassen.

(In beiden Fällen erledigt "sort" dann die Sortierung, ggf. mit der Option "-u" auch noch das Eliminieren von Duplikaten.)

Gruss, A.
 

Ähnliche Themen

Ich mag Dovecot nicht ...

./easy-wi_install.sh install Script

Installationsabbruch

JBidWatcher: Problem bei loading Auctions in Verbindung mit mySQL

Problem mit HSPA+ Modem Huawei E353 - Installation unmöglich?

Zurück
Oben