Mengenoperationen auf Listen in bash

Tuesday, April 5th, 2011

Ein 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

krusader mit xterm - oder, wie starte ich xterm in Ordner foo

Tuesday, October 13th, 2009

Gerade habe ich auf Keks Empfehlung hin den Dateimanager krusader ausprobiert - welcher übrigens für alte Norton/Total/etc-Commander-Fans sehr wohltuend ist (reine Tasturbedienung möglich). Krusader benutzt aber standardmäßig konsole für den Terminal-Shortcut.
Da ich lieber xterm verwende, eröffnete sich das Problem, xterm in Umgebung eines bestimmten Verzeichnisses zu öffnen. Während das bei konsole mit einer Option schnell getan ist, versagt das intuitive

xterm -e “cd /mein/verzeichnis”

Der Workaround dazu ist einfach danach eine neue bash zu starten, die dann erst bei Beendigung das xterm zum terminieren bringt, und nicht wie vorher, direkt nach dem cd.

xterm -e “cd /mein/verzeichnis; bash”

Diese Vorgehensweise ist auch immer dann anwendbar, wenn ein skript in xterm ablaufen soll, aber der Nutzer danach das Terminal wieder zur Verfügung haben soll.

Bier

commandlinefu - Code-Snippets für die shell

Wednesday, August 19th, 2009

Auf der Suche nach einem speziellen bash-Problem, bin ich auf eine sehr interessante Seite gestoßen:

http://www.commandlinefu.com/

Dort findet man zu jedem erdenklichen Thema UNIX-shell-Einzeiler. Das nette ist, das man sich recht einfach registrieren und dann selbst kleine Programme hinterlassen kann.

Das Projekt existiert zwar erst seit Anfang 2009, doch hält durch stetige Veröffentlichungen des Seiteneigners bereits knappe 3000 Einzeiler.

Leider fehlt noch eine Suchfunktion, was mich jetzt etwas davon abgehalten hat, direkt etwas einzutragen, denn ich will ja keine doppelten Einträge hervorrufen, aber ich werde dem Author mal bescheidsagen, dann hat sich das bestimmt schnell gelöst.

Keks hat mich darauf aufmerksam gemacht, dass es doch schon eine Suche gibt. Diese befindet sich direkt unter dem Titel… :roll:

Für jeden bash-”Programmierer” auf jedenfall merkenswert.

Gruß aus Sachsen

Bier

sed Einzeiler Beispiele

Wednesday, December 3rd, 2008

Na mal wieder an einem sed Problem den Kopf zerbrochen? Das muss nicht sein :-), denn zum Glück haben schlaue Köpfe ja schon vor uns Hirnschmalz investiert. Folgende Liste (zusammengestellt von Eric Pemen) beitet einige nützliche Tipps, Tricks und fertige Lösungen. z.B.: zentriert folgendes Beispiel alle Zeichen in einer 79 Zeichen breiten Spalte.

sed -e :a -e ’s/^.\{1,77\}$/ &/;ta’ -e ’s/\( *\)\1/\1/’

Ich wäre nicht drauf gekommen :-). In diesem Sinne viel Spass mit sed!

Keks


Stoppt die Vorratsdatenspeicherung! Jetzt klicken & handeln!Willst du auch bei der Aktion teilnehmen? Hier findest du alle relevanten Infos und Materialien: