Erbauliches Lateinische Verbfamilien Altgriechische Grammatik (i.st.n.) Wörterbücher - online Altgriechisch-Konverter
Lexer Eigener Nameserver Cloud-Telefonanlage mit Asterisk Fernsteuerung von Outlook per ssh Interaktive HTML-Tabelle Bilderverwaltung im Browser CSV => Excel (formatiert) Befehlsreferenzen
Horae vulnerant ... Terminal 2.0 ...

Hotkeys (Tastatursteuerung)

Befehl Aktion
+ Vergrößerung aller Bilder
- Verkleinerung aller Bilder


Die meisten Skripte erwarten 3 Dateien an folgenden Orten
  • /usr/local/bins (bins => "bin shared" => diese Bibliotheken sind für verschiedene Umgebungen identisch)
    • common (allgemeine Bash-Routinen) Download
    • commonroutines.awk (allgemeine gawk-Routinen) Download
  • /usr/local/bin
    • commonspecific.awk (1 Dummy-Routine zu Kompatibilität mit anderen Umgebungen und realer Implementierung) Download
      • inkludiert von commonroutines.awk
Paarige 4er-Klammern {{{{ ... }}}} innerhalb der Skripte sind Faltungsanweisungen für vim.
Sie können mit dieser Anweisung in .vimrc verwendet, alternativ belassen oder auch gelöscht werden:
  • set foldmethod=marker
  • set foldmarker={{{{,}}}}
Die meisten Skripte sind an die eigene Verzeichnisstruktur, eigene Mailadressen und Namen anzupassen.

Nahezu alle Skripte haben eine Option -h für Hilfe
  • myscript -h
Hierbei sind Angaben in runden Klammern () nur Merkhilfen, keine Langform der jeweiligen Option
Beispiel Richtig: (-g anstelle falsch: -gui etc.)
myscan [-g(ui)] 
       ....
       ....
CSV-verarbeitende Skripte erwarten folgendes Format:
  • Trennzeichen: Semikolon
  • keine Hochkommata (Gänsefüßchen)
  • CSV-Dateien mit Kommata als Trenn- und Hochkommata als Textkennzeichen können mit dem Lexer mycsv2csv in das vorige Format gewandelt werden.
  • Zahlen dürfen keine Tausendertrennzeichen, jedoch einen deutschen oder englischen Dezimaltrenner haben.

mycsvfilter


Erzeugt durch

Filterung von csv-Dateien


     Cave: Eingabedatei wird konvertiert erwartet (ASCII|UTF-8, Unix, keine Umlaute ...)

           Ohne Eingabedatei wird von stdin gelesen

           Neben stdout wird auch die Datei filtered.csv erzeugt.

     #########################################################################################################################################

     /usr/local/bins/mycsvfilter [-f(ilter) <col>:[!]<filter>[#<col>:[!]<filter>[..]] 
        [-F <filtername> [ -F .. ]] 
        [-i <col>:[!]<file1>[#<col>:[!]<file2>[..]] 
        [-I <col>:[!]<pfad zu auspraegungsdatei> [ -I .. ]]
        [-e(xclude) <excludes>] 
        [-c(calculate) <cols>] 
        [-H(eaderrows) <row>[:<row>...]] 
        [<infile>]

     #########################################################################################################################################

     Cave: Filteroptionen (-f,-F,-I) koennen beliebig oft angegeben und kombiniert werden.
           Innerhalb eines jeden Filters darf jede Spalte nur EINMAL vorkommen.
           Die _Kriterien_ eines jeden Filters werden und-verknuepft.
           Die _Filteroptionen_ selbst jedoch werden oder-verknuepft.
           
           Beispiel

           /usr/local/bins/mycsvfilter -f "3:Projekt.*" -f "4:Team.*" -F default -I 4:/home/heinz/teams  <infile>

           Cave: Bei multiplen -f Optionen entfaellt Option -c

     -f: <col>:[!]<filter>[#<col>:[!]<filter>[..]] 

         und-verknuepfte Filterung aller Zeilen nach Strings, Zahlen oder regulareren Ausdruecken


         Verkettung von Spalten und Filtern
         Trennug der Spalten-Filter durch "#"
         Trennung von Spalte und ihrem Filter durch ":"
         negative Filter mit Prefix "!"
         numerische Vergleiche mit Prefixen
           - <,>,<=,>=
             - Cave: Ist der Spaltenwert keine Zahl, wird die zugehoerige Zeile ausgefiltert
             - Cave: Dezimaltrenner fuer Vergleichsoperanden ist '.', also
                 /usr/local/bins/mycsvfilter -f '8:>4.5' Hugo.csv

         Cave: "0" entspricht numerisch 0, wird also von jeder 0-Darstellung (0.00, ...) erfuellt

         Cave: "empty" entspricht false in awk oder einem beliebigen 0-Wert (also [0,.])

         Cave: Enthaelt der Filter "typische" Regex-Sonderzeichen (cf. Code), wird er als Pattern interpretiert
            Rapp|Koch
            .*Koch
              Cave: * ist nicht Shell-Wildcard, sondern Quantifier, also nicht
                *
              sondern
                .*
            \.prod
            Sales\sTask
            Sales[ \t]sTask
              Cave: Ein '\' muss 2-mal angegeben werden, da das Pattern als dynamic regexp zunaechst als String verarbeitet wird

            Achtung: Folgende Filterungen sind synonym 
                     mycsvfilter -f '7:Intern#6:ja#21:A-CT1CSI[35].*'  Teamschnitt_generiert.csv 
                     mycsvfilter -f '7:Intern#6:ja#21:A-CT1CSI(3|5).*' Teamschnitt_generiert.csv

     -F: <filtername> <Datei>
         
         convenience-Funktion: Verwenden eines in Datei filter.config beschriebenen Filters im Format
           <filternam>;<filter>

           Beispiel

             budget;2:!^400(0088|0001|0117|0273|0296|0336|0390|0520|0532|0597|0598|0615|0618|0923|1001|1017|1026|1027)

             Cave: ';' darf damit im Filter selbst neben '#', '!' und ':' als Sonderzeichen nicht vorkommen

     -i: <col>:[!]<file1>[#<col>:[!]<file2>[..]] 

         und-Verknuefpung der Filterauspraegungen der jeweiligen Datei 
           cf. -f und -I

     -I: <col>:[!]<auspraegungsdatei>

         Filterung anhand _einer_ Spalte ueber die Auspraegungen aus einer Datei.
           => hieraus lassen sich Oder-Verknuepfungen von Spalten mit vielen Auspraegungen realisieren.
         Ein optionales '!' negiert die Liste.

         Die Auspraegungsdatei enthaelt alle Werte, welche spalte <col> annehmen darf
           Diese Werte duerfen auch regulaere Ausdruecke sein, z.B.
             .* Document Serv.*

           mycsvfilter -I 5:/home/heinz/Teams -I 6:/home/heinz/Scopes ...
             oder-verknuepfte Filterung der Spalten 5 und 6 nach Auspraegungen von Mustern in angegebenen Dateien

         Erzeugt wird ein Filterausdruck der Art
           (a|b|.* Doc Serv.*)
           !(a|b|[0-9].*)

     -H: Beibehaltung der Zeilen mit den angegebenen Nummern

         Trennung der Zeilen durch :
      
           -H 1:2:3

     -c: Summation von Spalten

         Cave: Option unzulaessig bei multiplen Filtern (mehreren oder-verknuepften -f Optionen)
         
         Trennung der Spalten durch :
           
           -c 2:6:8

         Cave: Summation NACH Filterung

     -e: Ausblenden von Spalten
         
         Trennung der Spalten durch :
           
         Cave: -e 2:3:4  => Ausblenden der Spalten
               -e '!2:3:4' => Anzeige genau nur dieser Spalten (Ausblenden aller anderen - negativer Filter mit vorangestelltem '!')
         Cave: Explizite Einschluesse sind auf 100 Spalten begrenzt

     Beispiel

     /usr/local/bins/mycsvfilter -e 1:14:15 -f 6:match#1:!Sales#3:empty#4:!empty#5:0#7:!0#8:!(Breinlinger[^,]*,[[:space:]]*Heinz) Hugo.csv
        
        Ausblenden
          Spalten 1, 14 und 15 
        Filtern
          Spalte 6: "match"
          Spalte 1: Nicht "Sales"
          Spalte 3: leer (== kein Wert, also Leer-String)
          Spalte 4: nicht leer
          Spalte 5: 0
          Spalte 7: nicht 0
          Spalte 8: nicht Pattern

     /usr/local/bins/mycsvfilter -f 4:<=0.8 Hugo.csv

Abhängigkeiten

Download

mycsvfilter


Impressum