awk in Verbindung mit Shell

A

AdZo

Grünschnabel
Guten Tag, ich bin neu hier, habe die Suche nur einmal mit dem Begriff "awk" probiert, allerdings ohne Erfolg...

Zum Hintergrund:
Bin 21 Jahre, mache Ausbildung zum Technischen Assistenten für Informatik. Momentan absolviere ich für diese Ausbildung ein 4wöchiges Praktikum bei der Postbank Systems in Hameln.

Ich bin hier relativ fix unterwegs und habe jetzt eine Aufgabe bekommen, bei der ich erstmals Hilfe bzw. Einführung brauch ;)

Mein Arbeitskollege schreibt mit der Programmiersprache " awk " in Verbindung mit Shell eigene Programme, die ihm txt-Files analysieren und ggf. ausgewertete Daten an seine email Adresse senden.

Ich habe mir jetzt Cygwin installiert und mich größtensteils mit der Grundstruktur beschäftigt, mit dem Ablauf der Sprache.





Ziel ist es, eine " C Source " Datei zu durchsuchen und dann die entsprechende Felder auszugeben wie IP und Comment.
Wie geh ich jetzt sowas an?

Also ich möchte mittels dieser Datei:
c:/Dokumente\ und\ Einstellungen/..................../Programmiersprachen/test.awk
diese:
c:/Dokumente\ und\ Einstellungen/..................../Programmiersprachen/objects_5_0.C
analysieren und dort IP herausziehen!
 
Zuletzt bearbeitet:
Wie geh ich jetzt sowas an?
ich würde mal schätzen mit regulären ausdrücken?
btw würde ich dir ja zu perl raten weil es
  1. auch (iirc) nativ in windows (ohne cygwin gefrickel) läuft und
  2. weil es eine "bessere" regex engine hat

aber google kennst du schon, oder?
google suche nach "ip" und "regex"
regexes für numeric ranges (0-255 zb)
hier gibts ne ip-regex
*hinklatsch*
Code:
\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b
wobei das so natürlich nicht in awk funktionieren wird (in perl schon..)
also es gibt ein paar sachen, wo ich mir sicher bin, dass man sie einfach rausnehmen muss für awk, zum beispiel dürfte awk keine "non capturing groups" (:?regex) unterstützen. außerdem weiß ich nicht, ob man nicht schon die "expliziten quantifier" ({3} zum beispiel) so escapen muss oder nicht: \{3\}.
zum beispiel sagt "man awk":
man awk schrieb:
AWK uses extended regular expressions as with egrep(1). The regular expression metacharacters, i.e., those with special meaning in regular expressions are

^ $ . [ ] | ( ) * + ?
also keine spur von "{" und "}", obwohl das afaik standard-mäßig zu extended regexes dazugehören sollte. (egrep kanns auch)
also wenn du mit awk arbeiten willst musst du dir sowas natürlich zu gemüte führen.

oder wenn du nicht so auf überladene websites stehst könntest du mal auf perldoc.perl.org vorbeischauen. da gibts zum beispiel diese beiden tutorials (quickstart und perl regex tutorial), wobei awk natürlich nur eine untermenge der perl-syntax was regexes angeht unterstützt. aber zum lernen von regexes ist die perl dokumentation auf jeden fall geeignet. musst dann halt nur schauen, was du alles nicht "anwenden darfst" in awk (oder vielleich später auch sed) oder was du extra escapen musst, was andere bezeichnungen hat etc.

und btw: perl ist (unter anderem) stark von der (ba)sh und awk beeinflusst, also die syntax ist nicht sooo groß anders. (perl kennt iirc sogar "BEGIN" und "END"..)
 
Zuletzt bearbeitet:

Ähnliche Themen

[HowTo] TeamSpeak 2 - RC2 - Server (Deutsch/Englisch)

Zurück
Oben