Auf den Adminseiten von WordPress gibt es ein paar Länderstatistiken, d.h. es wird aufgelistet aus welchem Land wieviele Besucher kamen – heute, gestern, 7 Tage, 1 Monat, 1 Jahr oder die gesamte Blogzeit betrachtend.

Das wird auf einer Karte schön dargestellt, wenn auch nicht ganz zu meiner Zufriedenheti.

Bild

Geht man auf die Liste und markiert z.B. Burkina Faso, dann wird es mit der Umgebung eingeblendet und farblich hervorgehoben – leider werden die Nachbarstaaten in dem Moment nicht mit der Zahl der Besuche dargestellt, sondern immer weiß. Man kann anders aber nicht kleinere Länder heranzoomen – so ist all das Gewese im ehemaligen Jugoslawien – Kroatien,, Serbien, Kosovo, Montenegro, Bosnien-Herzegowina und Slowenien so klein, dass es auf der Weltkarte nicht auf einem 1280×1024 Display annavigierbar ist.

Und jetzt kommt die Enttäuschung: Ich habe auch keine Lösung anzubieten. :)

Bisschen weiß alles in Afrika, rund um Afghanistan und in Indonesien/Java. Was machen die Leute in Benin den ganzen Tag, in der Elfenbeinküste, Liberia, Kenia, Somalia? Wieso surfen die nicht meine Blog an? Namibia und Ghana gerade mal und so Nordzeuch wie Marokko und Tunesien.

Man kann aber die Liste der Nationsnamen mit der Maus markieren, und dabei den ersten Buchstaben der Tabelle opfern, weil man sonst leicht aus dem Bereich gerät, und viel zu viel markiert, und dann pastet man es schwungvoll in die Shell, wo man ein Anführungszeichen aufgemacht hat, hinter einem echo-Befehl:

echo „

Mit einem mittleren Mausklick kopiert man den Inhalt in die Shell und schließt die Anführungsstriche, …“

echo „untryViews

Germany7.284
Austria329
United States291
Switzerland254
France101
Italy29
Romania28
United Kingdom26
Netherlands21
Ireland17
Sweden15
Spain12
Luxembourg12

…“

Die Leerstellen zwischen (Co)untry und views verschwinden ungünstigerweise, aber mittels Speichern in einer Datei und späterer Modifikation mit sed, dem StreamEDitor, nicht der Sozialistischen Einheitspartei Deutschlands, und den passenden Befehlen lässt sich das heilen:

echo „untryViews

Germany7.284
Austria329
United States291
…“ > nationen.blog

<pre>

sed ’s/.//;s/ /_/g;s/[0-9]/ &/‘ nationen.blog | sort -nk 2

</pre>

Der vertikale Strich kurz vor Schluß nennt sich Pipe, wie die Pfeife, die es bei Magritte nicht ist, oder die Halfpipe der Skater oder eine Pipeline – es ist weniger ein Rohr aber eine Ausleitung: Was das eine Programm als Output produziert wird vom nächsten als Input gelesen. Also der SED-Befehl wird an sort geleitet, dem die Schalter -nk 2 sagen, dass numerisch zu sortieren ist nach dem key 2, also der Anzahl.

Der Befehl für sed sind 3 Befehle, genaugenommen; getirennt per Semikolon: ’s/.//;s/ /_/g;s/[0-9]/ &/‘. Alle Befehle sind s:=substitutions=Ersetzungsbefehle.

s/.//
s/ /_/g
s/[0-9]/ &/

Ziel ist es, vor der Anzahl eine Leerstelle zu erzeugen, und in der Nation, wie bei „Republic of Korea“ die Leerzeichen durch Unterstrich zu ersetzen, so dass die Nation nur ein Wort ist, und man dann mit sort, wenn man nach der zweiten Zeichenkette sortiert, auch die Anzahl erwischt, und nicht das „of“. Da bei sed der Punkt ein Jokerzeichen für jedes beliebige Zeichen ist, muss man ihn mit einem Backslash maskieren, wenn man wirklich einen Punkt meint – in der Anzahl wird der Punkt als Tausendertrenner verwendet – damit käme sort nicht zurecht, also substituieren wir den Punkt mit nix: ’s/.//‘ – die Vorwärts-Slashes, Schrägstriche oder Divisionszeichen trennen die Ausdrücke voneinander: Was soll ersetzt werden, wodurch?

Befehl 2 ersetzt reguläre Leerzeichen durch Unterstriche. Das abschließende g für global sorgt dafür, dass nach weiteren Ersetzungsmöglichkeiten gesucht wird, auch wenn schon eine in der Zeile gefunden wurde.

Generell verarbeitet sed den Input Zeile für Zeile.

Der Substitutionsbefehl ist so aufgebaut: s/dies/das/FLAG und ersetzt dies durch das. Wenn man den Slash ersetzen will oder etwas durch Slash ersetzen will kann man andere Zeichen als Trenner benutzen: s|/i|/b|g zum Beispiel.

Befehl 3 ersetzt eine Ziffer (0-9) durch ein Leerzeichen, gefolgt von der Ziffer. Das & ist der Ausdruck, auf den der erste Ausdruck gepasst hat. Es wird nur die erste Ziffer pro Zeile ersetzt – nicht jede. Die eckige Klammer definiert eine Zeichengruppe. Das kann eine Auflistung sein wie [aeiou], oder ein Bereich [1-5] oder beides und auch mehrmals sein [äöüÄÖÜß2-8]. Man nennt dies einen regulären Ausdruck, sei es, weil die Ausdrücke einer strengen Regel genügen müssen, sei es, weil sie selbst Regeln definieren, auf die Texte passen müssen. Soll das Minus ein Zeichen des Ausdrucks sein benutzt man es als letztes, wodurch signalisiert wird, dass es nicht einen Bereich markiert. MIt einem Caret [^0-9] als erstes Zeichen in den Backsteinklammern negiert man die Zeichengruppe – dies bedeutet also: Alles außer Ziffern.

Vielen Leuten sind ja leicht eingeschüchtert, wenn sie die Kommandozeile sehen, aber dazu besteht kein Anlass. Reguläre Ausdrücke sind leicht zu lernen, man kann sie inkrementell lernen und profitiert schon, bevor man alle Möglichkeiten kennt. Es gibt viele Programme die reguläre Ausdrücke verstehen, und wenn die Syntax auch nicht 100% identisch ist, so gibt es doch sehr große Überschneidungen – zuerst mal in sed, AWK und perl, aber auch in egrep, in find über verschiedene Texteditoren. Ich glaube auch in LibreOffice kann man welche benutzen.

Die ersten 2 Befehle hätte man leicht mit Suchen/Ersetzen erledigen können, wie man sie aus vielen Programmen kennt, aber mit Variablen kommt eine sonst nicht verfügbare Mächtigkeit ins Spiel, die einem oft repetitive, einschläfernde Tätigkeiten abnehmen kann, und manche Aufgaben überhaupt erst denkbar macht, wenn man 1000e Zeilen rapp-zapp korrigiert.

Ergebnis der Aktion war eine Liste, bei der die Nationen nicht nach (Anzahl, zuerst besucht aus) sortiert sind, sondern nach (Anzahl, alphabetische Sortierung). So läßt sich m.E. schneller nach Ländern suchen, aus denen man erst 1 oder 2 Besucher hatte.

8 Gedanken zu „Blognationen und reguläre Ausdrücke

  1. dorotheawagner

    Es tut zwar nichts zur Sache, aber auf der Weltkarte meines Blogs gibt es gar kein Afrika. Das hat man davon, wenn man in einem Land, das keine nennenswerten Kolonien hatte, ein Sprachblog betreibt. Auch China und Indien sucht man bei mir vergebens. Wenn es nicht die je 23 Klicks aus Rußland und Australien gäbe, könnte man meinen, die Welt bestünde aus Europa und Amerika …

    Antwort
    1. user unknown Autor

      Vielleicht ist es doch ein Problem mit dem Monitor (ich habe es ja gesehen). Kannst Du einen Screenshot machen, und diesen mit einem Bildbetrachter/Grafikprogramm öffnen? Oder mir per E-Mail schicken, ob es bei mir genauso ausssieht. Achso – wenn der Screenshot von mir bei Dir normal sichtbar ist, dann sagt uns das auch etwas – die Frage ist nur: was?

      Antwort
    1. dorotheawagner

      Asche auf mein Haupt, aber ich schreibe jetzt auch in der Öffentlichkeit wieder „Rußland“ mit scharfem „s“. Die Reformer wollen die Schreibung ja von der Unterscheidung zwischen langem und kurzem Vokal abhängig machen (Straße und Grüße – lang – vs. Nässe und Küsse – kurz), aber das Argument, das der alten Rechtschreibung zugrundelag, ist mindestens ebenso einleuchtend: „Ein s, das zu zwei Silben gleichzeitig gehört, schreibt man doppelt … Tritt ein doppeltes s aber an eine Stelle, wo es kein solches Silbengelenk mehr bildet, dann werden die beiden s zu einem ß zusammengezogen“ (Theodor Ickler, Falsch ist richtig, München 2006, S. 30). Man sagt nicht Rus-sland, sondern Russ-land und schreibt daher: Rußland.

      Antwort
      1. user unknown Autor

        Aha – danke für die Einsicht. Ich mache ja auch nicht allen neuen Blödsinn mit, aber diesen wohl schon, weil das kurz-vs.-lang so einleuchtet und eine leichte Regel ist.
        Aber ich muss auch zugeben, dass es mir die Rechtschreibhilfe von Firefox unterkringelt hat, sonst wäre es vielleicht gar nicht aufgefallen.

        Antwort
        1. dorotheawagner

          Der Mensch, der in Deinem Blog für die Silbentrennung verantwortlich ist, muß etwas mißverstanden haben. Rußl-and kommt gar nicht in Frage!

          Antwort
          1. user unknown Autor

            Das ist ein Programm, das auch abhängig von Bildschirmbreite u. Auflösung breitere oder schmalere Textblöcke bildet. Trennen kann es nicht, aber es tut es mit großer Leidenschaft und Ausdauer. Es gehört zu WorstPress – ich habe darauf keinen Einfluss.

            Antwort

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Google Foto

Du kommentierst mit Deinem Google-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.