19.12.2018 03:19:50
Navigation
· Bugtracker
· Kontakt
· Web Links
· Suche
· Buchtipps
Login
Benutzername

Passwort



Noch kein Mitglied?
Klicke hier um dich zu registrieren

Passwort vergessen?
Um ein neues Passwort anzufordern klicke hier.
Mitglieder Online
· Gäste Online: 7

· Mitglieder Online: 0

· Mitglieder insgesamt: 14,206
· Neuestes Mitglied: avoss
Foren Themen
Neueste Themen
· Differentbesteurung ...
· § 4 Nr. 21a (bb) Um...
· §13b / Reverse Char...
· Kein Jahr 2017
· Buchführungspflicht...
Heißeste Themen
· Differentbesteuru... [3]
CSV-Import v4.0 verfügbar

Arbeiten mit GAWK-Skripten



AWK ist eine in Bezug auf
Zeichenkettenmanipulation extrem mächtige und effiziente Skriptsprache. Das mit
dem Plugin mitinstallierte GAWK.exe ist die GNU-Implementierung der
Programmiersprache AWK und wird von der Free Software Foundation gepflegt.



 



Wozu benötigt man Skripte? lang=DE> Selten kommen die CSV-Daten in einer Form vor, die EC&T ohne
weitere Ergänzung 1:1 verarbeiten kann. Das ist nur der Fall, wenn man einen
EC&T-Export (siehe Datei-Menü) re-importiert. Z.B. wenn man eine CSV-Datei
von seinem Bankkonto hat, fehlt dort natürlich der MWSt.-Satz. GAWK erlaubt es
Regeln zu formulieren, mit denen man diese Information ergänzen kann und
minimiert den Aufwand für die manuelle Bearbeitung erheblich. GAWK kann also
Felder (bzw. Spalten) in die CSV-Datei einfügen, z.B. Belegnummer, die vorher,
um bei dem Beispiel Bankkonto zu bleiben, aus einem Verwendungszweck-Feld
herausextrahiert wurde – oder aber Felder zusammenfassen, z.B. wenn mehrere
Verwendungszweck-Felder vorhanden sind oder man den Kontoinhaber des
Gegenkontos und das Verwendungszweckfeld verschmelzen möchte.



 



Wie arbeitet GAWK? lang=DE>GAWK verarbeitet die Eingabedatei (die CSV-Datei) zeilenweise und
zerlegt dabei die Felder entsprechend dem eingestellten Trennzeichen. Diese
Felder kann man im Skript mit $1, $2, $3 usw. ansprechen. $0 repräsentiert die
gesamte Eingabezeile. Das einfachste GAWK-Skript sieht so aus und macht nichts
anderes als die ursprüngliche Datei zu kopieren:



 



{ print $0 }



 



Möchte man nur die 3. und 4. Spalte aus einer
Datei extrahieren geht das folgendermaßen (Semikolon als Trennzeichen):



 



                { print $3 ";" $4
}



 



Korrekter wäre es hier, statt des ";"
ein FS einzufügen. Das steht für Feld-Separator. FS wird vom
Import-Plugin automatisch gesetzt und entspricht immer dem im Import-Dialog
angegebenen Trennzeichen. Es gibt noch andere voreingestellte Platzhalter, etwa
NF (number of fields) der der Anzahl der Felder der Zeile entspricht. $NF
würde also das letzte Feld der Zeile bezeichnen.



 



Die geschweiften Klammern { } bedeuten
das hier ein oder mehrere Befehle enthalten sind, die unbedingt auf jede Zeile
anzuwenden sind. Stände vor dem { eine Bedingung, etwa NF >= 4,
würden die in den Klammern befindlichen Befehle nur ausgeführt, wenn die
Bedingung erfüllt ist (in diesem Fall, wenn die Anzahl der Felder größer oder
gleich 4 ist).



 



Für Operationen, die nur am Anfang oder Ende
der Verarbeitung ausgeführt werden sollen, gibt es die Schlüsselwörter BEGIN
und END. Z.B. Kann man mit BEGIN vor der Verarbeitung der
Eingabedatei eine Kopfzeile ausgeben.



 



Einen Schönheitsfehler hat GAWK für deutsche
und österreichische Benutzer: Die interne Fließkommafunktion arbeitet mit dem
Dezimalpunkt. Möchte man also Berechnungen anstellen, muss das Komma immer
erstmal konvertiert werden, z.B.:



 



{



                netto
= $7;                                            # Netto-Betrag steht im 7.
Feld



                sub(/,/,
".", netto);                                              # Komma
durch Punkt ersetzen



                brutto
= netto * 1.19;                           # Brutto-Betrag errechnen



                brutto
= sprintf("%.2f", brutto + 0.005);          # auf 2 Stellen nach dem
Komma kürzen, dabei



lang=DE># kaufmännisch runden



                sub(/\./,
",", brutto);                             # jetzt den Dezimalpunkt
wieder durchs Komma ersetzen



                print
netto ";" brutto                          # Ausgabe des Ergebnisses



}



 



In den sub Funktionen (steht für
Substitution, Ersetzen) ist der erste Parameter ein sogenannter regulärer
Ausdruck (auf englisch: regular expression). Damit können komplexe Suchmuster
angegeben werden. Suchte ich also eine 5-stellige Rechnungsnummer in einem
Verwendungszweck-Feld, würde das so aussehen:



 



BEGIN { print
"Verwendungszweck;Belegnummer" ; anzahl = 0 }



{



                position =
match($10, /R[0-9][0-9][0-9][0-9][0-9][^0-9]/)



                if (position
> 0)



lang=DE>{



                               belegnummer
= substr($10, position, 6);



lang=DE>anzahl = anzahl + 1;



lang=DE>}



                else



                               belegnummer
= "keine gefunden";



                print
$10 ";" belegnummer



}



END { print
";----------------------------------\nAnzahl gefundener
Rechnungsnummern;" anzahl }



 



match() style='font-size:8.0pt;font-weight:normal'> gibt die Position der dem Muster lang=DE style='font-size:8.0pt'>/R[0-9][0-9][0-9][0-9][0-9][^0-9]/ lang=DE style='font-size:8.0pt;font-weight:normal'> entspechen Zeichenkette
wieder (ein R mit 5 Ziffern, gefolgt von einem Zeichen, das keine Ziffer ist);
wenn diese nicht gefunden wurde ist position lang=DE style='font-size:8.0pt;font-weight:normal'> gleich 0 und es wird
"keine gefunden" in die Belegnummernspalte eingetragen, ansonsten
wird die 6-stellige Zeichenkette an der gefundenen position extrahiert und
ausgegeben. Der Code veranschaulicht außerdem die Nutzung von lang=DE style='font-size:8.0pt'>BEGIN und END lang=DE style='font-size:8.0pt;font-weight:normal'>.



 



Fazit



Es erfordert ein wenig Einarbeitung in die
Sprache und insbesondere die regulären Ausdrücke mögen etwas abstrakt
erscheinen. Aber es wird jetzt wohl deutlich geworden sein wie viel
Zeiteinsparungspotenzial insbesondere bei einer großen Menge importierter Buchungsvorfälle
durch das Skripting möglich ist. Für eine umfassendere Darstellung der Sprache
(G)AWK sei auf folgende Links verwiesen:



 



http://www.ostc.de/awk.pdf



href="http://www-user.tu-chemnitz.de/~hot/unix_linux_werkzeugkasten/awk.html">http://www-user.tu-chemnitz.de/~hot/unix_linux_werkzeugkasten/awk.html



href="http://www.gnu.org/software/gawk/manual/gawk.html">http://www.gnu.org/software/gawk/manual/gawk.html



href="http://de.wikipedia.org/wiki/Awk">http://de.wikipedia.org/wiki/Awk



 



und vor allem:



href="http://www.easyct.de/fusion_forum/viewthread.php?forum_id=10&thread_id=1906">http://www.easyct.de/fusion_forum/viewthread.php?forum_id=10&thread_id=1906



 




Kommentare
Es wurden noch keine Kommentare verfasst.
Kommentar schreiben
Bitte logge dich ein, um ein Kommentar zu verfassen.
Bewertungen
Bitte logge dich ein, um eine Bewertung abzugeben.

Es wurden noch keine Bewertungen abgegeben.
Forensuche



Shoutbox
Du musst eingeloggt sein, um eine Nachricht zu verfassen.

10.12.2018 15:19:41
Ohne eine genauere Beschreibung des Problems gibt es normalerweise keine Lösung. Wink Besser Forum-Post oder ggf. Bugtracker-Eintrag
machen.

09.12.2018 15:07:58
Hallo Herr Mielke, leider funktioniert die Anwendung unter MAC nicht...gibt es Lösung? beste grüße Pressel

30.11.2018 17:36:55
@latino01: Es gibt inzwischen ein Forum "EasyCash&Tax unter Linux und Mac". Wink

29.11.2018 14:06:57
Hallo Herr Mielke, bin Mal wieder zurück bei Ihnen nach längerer Phase. Wie sieht es mit Ihrer Software für MAC OS aus?!? Freue mich auf Ihre Antwort. Danke. Mit freundlichen Grüßen

27.11.2018 15:29:19
@confektion: .ecf-Dateien sind die Formulardateien und gehören zum Programmverzeichni
s. Du brauchst nur die Dateien aus dem Datenverzeichnis.

20.11.2018 22:42:17
Hallo,leider ist mir mein komplettes Betriebssystem abgestürzt FrownIch konnte meine Daten auf eine externe FP retten,aber nun lassen sich die ecf -Dateien nicht mehr öffnen.l

14.11.2018 18:30:56
Hallo, habe selbst die Lösung gefunden über Einstellung Bildschirmschrift.
Sorry.

14.11.2018 18:05:01
Ich habe kürzlich auf Vers. 2.28 upgedatet. jetzt werden die Texte, die auf dem Bildschirm generiert werden, in sehr großer Schrift gezeigt. die Buchungssätze sind ok. Was muss anders einstellen? Bitt

09.10.2018 15:46:27
@BHoering: Schaust Du im FAQ unter https://www.easyct
.de/faq.php?cat_id
=2#faq_20

08.10.2018 21:49:47
Hallo, ich habe auf einem XP-Rechner noch die alte Version 1.57 genutzt und habe jetzt auf enem Win10 neu installiert. Welche Dateien muss ich wohin kopieren, damit die Eingaben Q1-Q3 2018 in der n

30.09.2018 19:00:32
Hallo, ist es möglich, mehrere Buchungen gleichzeitig einem Betrieb zuzuodnen? Leider habe ich durch eine Betriebsumbenennun
g alle Buchungen ohne Zuordnung...

24.08.2018 19:17:01
Wollte mal kurz Danke sagen, für die Möglichkeit des Zooms im Journal!!! Habe einen neuen Laptop mit 4k Display und EC&T läuft immer noch sauber mit wine unter Linux Wink

24.08.2018 15:46:50
Wegen des Import-Plugins mach lieber einen detaillierten Bug-Report, wenn Du meinst, dass es ein Programmfehler ist.

24.08.2018 15:45:49
kann schon ein paar Tage dauern, bis jemand antwortet. Interaktiv heißt ja nur, dass Du nicht nur lesen kannst. Aber ist gerade schon ein bisschen Sommerpausenfeelin
g hier im Forum.

24.08.2018 08:09:37
ZITAT: PS: Diese Site ist hochgradig interaktiv. Wer sich die Mühe macht.... Hmh, gibt es hier denn so was wie Öffnungszeiten :-) Sehe hier keinen, bin meist alleine auf der Seite und Antworten ...

13,259,510 eindeutige Besuche