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)
- /usr/local/bin
- commonspecific.awk (1 Dummy-Routine zu Kompatibilität mit anderen Umgebungen und realer Implementierung) Download
- inkludiert von commonroutines.awk
- commonspecific.awk (1 Dummy-Routine zu Kompatibilität mit anderen Umgebungen und realer Implementierung) Download
- set foldmethod=marker
- set foldmarker={{{{,}}}}
- myscript -h
myscan [-g(ui)]
....
....
Wichtigst: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.
- cf. hierzu mycsvanalyze und mycsvconvert).
mycsvfilter
Erzeugt durch
- mycsvfilter -H1 -f '2:!.*Employee.*' Aktien.csv
- mycsvview -nlw 30 filtered.csv
- vim pretty
Filterung von csv-Dateien
- Mehrfachfilterung mit regulären Ausdrücken
- optionale oder-Verknüpfung
- optional Angabe mehrerer Dateien mit Filterkriterien oder vordefinierten Filtern
- Ausblendung von Spalten
- kann indirekt mit mycsvview verwendet werden
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
- gawk
Download
mycsvfilterImpressum