Mengenoperationen auf Listen in bash
Tuesday, April 5th, 2011Ein eigentlich alltägliches Problem, welchem ich mich aber noch nicht richtig gestellt habe, da es meist kleine (aber oft ineffektive) Workarounds gibt.
Zur Betrachtung:
Eine Zeile einer Liste entspricht einem Element in der Menge.
Anmerkungen:
Das Programm comm erwartet sortierte Listen.
Deshalb betrachten wir hier zwei sortierte (mittels sort) und eindeutige (durch uniq, nach voriger Sortierung) Listen, welche also entsprechend auch als zeilenweise Mengen aufgefasst werden können.
Ich nenne sie in dem Beispiel A und B.
Hier nun ein paar Ansätze zum Durchführen von gängigen Mengenoperationen:
- Vereinigung (A∪B)
sort -m A B | uniq
- Komplement (A\B)
comm -23 A B
- Schnitt (A∩B)
comm -12 A B
Durch diese Grundoperationen Vereinigung, Komplement und Schnitt lassen sich vielfäligte Operationen sehr leicht und effizient auf Listen implementieren.
Quelle: http://wordaligned.org/articles/shell-script-sets [4.4.2011 11:30]
bier



