oliver1804
Anmeldungsdatum: 27. März 2006
Beiträge: 279
Wohnort: Elmshorn
|
Hallo liebe Gemeinde, ich hab mir mittlerweile ein "kleines" awk-Skript gebastelt, welches noch weiter ausgebaut werden soll; momentan läuft außer ein paar Kopierbefehlen noch nicht wirklich viel. Mit Dokumentation hat das Skript allerdings (wenn man die Leerzeilen mitrechnet) bereits an die 180 Zeilen und ist somit für einen Laien wie mich mittlerweile ein ganz schöner Brocken. Da ich befürchte, auf Dauer den Überblick zu verlieren, würd ich mich über ein paar konstruktive Verbesserungsvorschläge sehr freuen: http://www.ubuntuusers.de/paste/12502/
|
Marc_BlackJack_Rintsch
Ehemalige
Anmeldungsdatum: 16. Juni 2006
Beiträge: 4695
Wohnort: Berlin
|
Ich kenne mich mit awk nicht aus, aber so ein langes Skript würde ich in Funktionen unterteilen. Und die Variablennamen sind ziemlich kryptisch.
|
NoKurth
Anmeldungsdatum: 18. August 2006
Beiträge: 430
|
Hallo Oliver, muss es denn unbedingt awk sein? Ich glaube, du versuchst mit viel Aufwand Dinge mit dem awk zu machen, die per Shell/Skriptsprache einfacher und effektiver wären. Gruß Norman
|
oliver1804
(Themenstarter)
Anmeldungsdatum: 27. März 2006
Beiträge: 279
Wohnort: Elmshorn
|
@ Marc 'BlackJack' Rintsch mit Funktionen meinst du wahrscheinlich Prozeduren? So wie ich Funktionen verstehe, geben die lediglich einen Wert zurück, während Prozeduren kleine Programmhäppchen sind (ich ordne diese Sache in die Kategorie prozedurale Programmierung ein). Funktionen sind in awk definitiv drin, was Prozeduren angeht, weiß ich das nicht so recht und auch in der Doku konnte ich das bisher noch nicht ausfindig machen bei der Benamsung der Variablen hab ich mir natürlich was gedacht nur muß man wahrscheinlich generell ein System haben, was man dann auf Deubel-komm-raus bei jedem Skript durchhält (oder es entweder erweitert bzw. korrigiert, wenn man dessen Unzulänglichkeit erkennt) @ NoKurth Windoofs (XP im Büro) hat auch eine Shell und man kann damit sicherlich einige Dinge anstellen (FOR ist wirklich mächtig) aber diese ganze Batch-Kiste hat mich ziemlich genervt, weil ich aufgrund fehlender Fähigkeiten (RegEx, Arrays) dauernd zu awk etc. verzweigen mußte und auch die Variablensetzung hat mich nicht wirklich befriedigt. Der Gedanke ist, alles möglichst aus einem Guß hinzubekommen Edit: ist awk keine Skriptsprache? AWK
|
Lunar
Anmeldungsdatum: 17. März 2006
Beiträge: 5792
|
oliver1804 hat geschrieben: mit Funktionen meinst du wahrscheinlich Prozeduren? So wie ich Funktionen verstehe, geben die lediglich einen Wert zurück, während Prozeduren kleine Programmhäppchen sind (ich ordne diese Sache in die Kategorie prozedurale Programmierung ein). Funktionen sind in awk definitiv drin, was Prozeduren angeht, weiß ich das nicht so recht und auch in der Doku konnte ich das bisher noch nicht ausfindig machen
Uh? Funktionen geben nicht nur einen Wert zurück, sie führen - man glaubt es kaum 😉 - auch Code aus. Prozeduren sind nur Funktionen, die nichts zurück geben. Du scheinst die Bedeutung der Termini "Funktion" und "Prozedur" nicht ganz verstanden zu haben. oliver1804 hat geschrieben: bei der Benamsung der Variablen hab ich mir natürlich was gedacht nur muß man wahrscheinlich generell ein System haben, was man dann auf Deubel-komm-raus bei jedem Skript durchhält (oder es entweder erweitert bzw. korrigiert, wenn man dessen Unzulänglichkeit erkennt)
Man braucht nicht unbedingt ein System. Es gilt eigentlich nur die Regel: Variablennamen müssen aussagekräftig sein, und das auch für Dritte. oliver1804 hat geschrieben: Windoofs (XP im Büro) hat auch eine Shell und man kann damit sicherlich einige Dinge anstellen (FOR ist wirklich mächtig) aber diese ganze Batch-Kiste hat mich ziemlich genervt, weil ich aufgrund fehlender Fähigkeiten (RegEx, Arrays) dauernd zu awk etc. verzweigen mußte und auch die Variablensetzung hat mich nicht wirklich befriedigt. Der Gedanke ist, alles möglichst aus einem Guß hinzubekommen
gawks Möglichkeiten sind aber ziemlich limitiert. Versuch mal, mit gawk eine graphische Oberfläche zu erstellen... oder eine Website abzurufen und zu parsen... oder... oliver1804 hat geschrieben: Edit: ist awk keine Skriptsprache? AWK
Streng genommen schon, praktisch eher ein "Skriptsprächlein". gawk ist auf Textverarbeitung ausgelegt (was sich überall bemerkbar macht), richtige Anwendungen sind damit kaum zu programmieren. Dazu fehlen wichtige Sprachfeatures (v.a. Objekte) und eine umfangreiche Sammlung an Modulen für GUI Programmierung, Netzwerkprogrammierung, etc. gawk ist ganz nett, um mal eben eine Logdatei zu parsen und schön lesbar auszugeben, doch komplexere Dinge rufen nach anständigen Sprachen wie Ruby, Python, Perl ( naja, eher nicht 😉 ). Ich schließe mich daher NoKurths Meinung an: Verwende eine richtige Skriptsprache!
|
user_unknown
Anmeldungsdatum: 10. August 2005
Beiträge: 17625
Wohnort: Berlin
|
Ohne dem Kern Deiner Aussage, lunar, widersprechen zu wollen, daß gawk nicht auf breiter Front eine geeignete Sprache ist, aber wenn Du so pingelig bist, dann bin ich es auch mal:
richtige Anwendungen sind damit kaum zu programmieren. Dazu fehlen wichtige Sprachfeatures (v.a. Objekte)
dann wäre mit C auch keine richtige Anwendung zu programmieren. Richtige Anwendungen haben weder eine Mindestgröße, noch eine Mindestkomplexität, benötigen nicht zwingend eine GUI, und auch keine Netzwerkfähigkeiten. Letzteres hat eigentlich nur eine Handvoll Programme. Und "Textverarbeitung" ist für mich auch nicht der richtige Ausdruck. Bei Herold: sed und awk, 1994 Addison-Wesley findet sich auch ein awk-Programm zum automatischen Erstellen von Netzplänen.
|
user_unknown
Anmeldungsdatum: 10. August 2005
Beiträge: 17625
Wohnort: Berlin
|
oliver1804 hat geschrieben: Windoofs (XP im Büro) hat auch eine Shell und man kann damit sicherlich einige Dinge anstellen (FOR ist wirklich mächtig) aber diese ganze Batch-Kiste hat mich ziemlich genervt, weil ich aufgrund fehlender Fähigkeiten (RegEx, Arrays) dauernd zu awk etc. verzweigen mußte und auch die Variablensetzung hat mich nicht wirklich befriedigt. Der Gedanke ist, alles möglichst aus einem Guß hinzubekommen
Wenn Du im Büro installieren darfst: Es gibt eine Menge Gnu-tools (sh.exe, sed, awk, wc, rev, tar, find, ...) als native win32-Ports hier - erzeugt kein wahres Linuxfeeling, aber immerhin: http://unxutils.sourceforge.net/
|
NoKurth
Anmeldungsdatum: 18. August 2006
Beiträge: 430
|
Hallo Oliver. NoKurth hat geschrieben: ... die per Shell/Skriptsprache einfacher ...
OK, dann formuliere ich es in "andere Skriptsprache" um. 😉 Habe im Büro auch nur WinXP, zu Hause zustätzlich noch Linux. Aus diesem Grund und auch beim Durchstöbern vieler Threads habe ich mich entschlossen, mal in Python "reinzuriechen". <persönliche Meinung>Ich glaube, dass man damit eine ganze Menge Dinge einfacher als mit awk realisieren kann.</persönliche Meinung> Gruß Norman
|
Lux
Anmeldungsdatum: 10. November 2005
Beiträge: 5152
Wohnort: Grüt (Gossau ZH), Schweiz
|
NoKurth hat geschrieben: Habe im Büro auch nur WinXP, zu Hause zustätzlich noch Linux. Aus diesem Grund und auch beim Durchstöbern vieler Threads habe ich mich entschlossen, mal in Python "reinzuriechen". <persönliche Meinung>Ich glaube, dass man damit eine ganze Menge Dinge einfacher als mit awk realisieren kann.</persönliche Meinung>
Ich würde Perl nehmen, wenn Du auf verschiedenen Plattformen arbeitest. Es ist auf jedem Unix vorinstalliert (auch auf Mac OS X) und für Windows gibt es mit Active State Perl auch eine gute Variante. Gruß Dirk
|
Marc_BlackJack_Rintsch
Ehemalige
Anmeldungsdatum: 16. Juni 2006
Beiträge: 4695
Wohnort: Berlin
|
Python ist auf MacOS X auch installiert, es wird sogar vom System verwendet. Deinstallieren ist also keine gute Idee. ☺ Und es gibt auch ein ActiveState Python für Windows.
|
fnumatic
Anmeldungsdatum: 20. Februar 2007
Beiträge: 379
|
Ich würde Ruby nehmen. Gibts für viele, imho alle relevanten Plattformen.
|
Lux
Anmeldungsdatum: 10. November 2005
Beiträge: 5152
Wohnort: Grüt (Gossau ZH), Schweiz
|
Marc 'BlackJack' Rintsch hat geschrieben: Python ist auf MacOS X auch installiert, es wird sogar vom System verwendet. Deinstallieren ist also keine gute Idee. ☺ Und es gibt auch ein ActiveState Python für Windows.
Ich habe auf der Arbeit mit HP-UX zu tun. Dort gibt es kein Python. Perl ist allerdings vorhanden. Gruß Dirk
|
oliver1804
(Themenstarter)
Anmeldungsdatum: 27. März 2006
Beiträge: 279
Wohnort: Elmshorn
|
Ich schätze, daß ich mich dann nach diesem kleinen Projekt mal näher mit Perl beschäftigen werde (steht ja schon im Wikipedia-Artikel drin, daß Perl sozusagen der große Bruder vom awk ist). Problematisch ist halt die zu investierende Zeit, aber ich hoffe mal, daß meine awk-Kenntnisse ein wenig helfen. @ user unknown Deinen Link hab ich früher auch benutzt, aber jetzt scheint mir doch http://gnuwin32.sourceforge.net/ sinnvoller zu sein - ich darf installieren und nutze das auch aus (gawk, sed, grep, sort und wc sind meine Favoriten)
|
oliver1804
(Themenstarter)
Anmeldungsdatum: 27. März 2006
Beiträge: 279
Wohnort: Elmshorn
|
Hallo Gemeinde, nach meinem Urlaub bin ich mal wieder dazu gekommen, an meinem Lieblings-gawk-Skript rumzubasteln (http://ubuntuusers.de/paste/14069/) und erfahre immer mehr, wie übel es ist, den Überblick zu verlieren - als Normalerweise-Nicht-Skripter soll sowas ja leicht passieren 😢 Vielleicht kann ja jemand aus meinem Weg, ein wenig Ordnung in die Sache zu bringen Nutzen ziehen und muß mein Tal der Tränen nicht komplett durchschreiten. Mein heißer Tipp lautet deshalb 1. gut sichtbar strukturiert zu schreiben hab z.B. BEGIN- und END-Blöcke in meine Kommentare einbezogen und wichtige {}-Blöcke durch Leerzeilen otisch abgegrenzt 2. einen Editor mit Folding-Möglichkeit zu verwenden damit kann man ganze Code-Blöcke zusammenfalten, so daß man nur noch eine Zeile sieht; gut ist, wenn man 1. beachtet hat kann hier wärmstens (g)vim empfehlen (http://vimdoc.sourceforge.net/htmldoc/usr_28.html) Tipps/Kritiken erfahrener Skripter sind immer willkommen
|
Hello.World
Anmeldungsdatum: 18. Januar 2006
Beiträge: 156
|
fnumatic hat geschrieben: Ich würde Ruby nehmen. Gibts für viele, imho alle relevanten Plattformen.
Und ist so langsam wie kaum eine andere Sprache.
|