Frage

Ich bin ständig das Erlernen neuer Werkzeuge, auch altmodisch diejenigen, weil ich die richtige Lösung für das Problem verwenden möchten.

Dennoch frage ich mich, ob es noch ein Grund, einige von ihnen zu lernen. awk zum Beispiel ist interessant für mich, aber für einfache Textverarbeitung, kann ich grep, cut, sed, etc., während für komplexe, ich für Python gehen würde.

Jetzt meine ich nicht, das ist es nicht ein leistungsfähiges und handliches Werkzeug. Aber da es Zeit und Energie nimmt ein neues Instrument zu lernen, ist es das wert

War es hilfreich?

Lösung

Ich denke, es auf die Umwelt ab, die Sie sich in finden. Wenn Sie ein * nix Person sind, dann wissen awk ist eine gute Sache. Die einzige andere Scripting-Umgebung, die praktisch jeden * nichts auch gefunden werden kann, ist sh. Während also grep, sed, etc sicher awk auf einem modernen Mainstream linux Distro ersetzen, wenn Sie exotischere Systeme bewegen, ein wenig awk zu wissen, geht praktisch, Real.

awk kann auch für mehr als nur Textverarbeitung verwendet werden. Zum Beispiel einer meiner Vorgesetzten schreibt Astronomie Code in awk - das ist, wie völlig alte Schule und super er ist. Zurück in seiner Zeit, es war das beste Werkzeug für den Job ... und jetzt, obwohl seine Studenten wie mich Python verwenden und was nicht, er hält sich an, was er weiß, und funktioniert gut.

Zum Schluss gibt es eine Menge alten Code tritt auf der ganzen Welt, ein wenig awk zu wissen, wird weh tun nicht. Es wird auch Sie besser * nichts Person machen: -)

Andere Tipps

Wenn Sie schnell die Grundlagen der awk lernen, können Sie in der Tat auf der Kommandozeile erstaunliche Dinge tun.

Aber die real Grund awk zu lernen, ist eine Entschuldigung zu haben, die superb Buch Die AWK Programming Language von seinen Autoren Aho zu lesen, Kernighan und Weinberger. Sie würden denken, aus dem Namen, dass es einfach lernen Sie awk. Eigentlich ist das nur der Anfang. Start in die Vielzahl von Problemen, die einmal einem in Angriff genommen werden können, ist eine kurze Skriptsprache, die String-Manipulation leicht macht - und awk war einer der ersten - es geht um den Leser zu lehren, wie eine Datenbank zu implementieren, einen Parser, einen Dolmetscher und (Speicher, wenn dient mich) einen Compiler für eine kleine Projekt spezifische Computersprache! Hätte sie auch ein Beispiel-Betriebssystem awk programmiert, wäre das Buch eine ziemlich vollständige Übersicht Einführung in die Informatik gewesen!

Famously klar und prägnant, wie das Original C Sprache Buch, es ist auch ein wunderbares Beispiel für freundliches technisches Schreiben richtig gemacht. Auch ist der Index ein Stück Handwerkskunst.

Awk? Wenn Sie es wissen, werden Sie es in der Befehlszeile verwenden gelegentlich, aber für etwas größer werden Sie fühlen sich gefangen, unfähig, die breitere Funktionen Ihres Systems und das Internet zugreifen, die wie Python etwas Zugang zu bietet. Aber das Buch? Sie werden immer freuen, Sie es lesen!

Der einzige Grund, warum ich awk verwenden ist das Auto-Splitting:

awk '{print $3}' < file.in

Dieser druckt das dritte Leerzeichen getrenntes Feld in file.in. Es ist ein bisschen einfacher als:

tr -s ' ' < file.in | cut -d' ' -f3

Ich denke, awk ist groß, wenn Sie Ihre Datei enthält Spalten / Felder . Ich benutze es bei der Verarbeitung / eine bestimmte Spalte in einer mehrspaltigen Datei zu analysieren. Oder wenn ich hinzufügen / löschen möchten eine bestimmte Spalte (n).

z.

awk -F \t '{ if ($2 > $3) print; }' <filename>

wird nur dann, wenn der zweite Spalt Wert in einem Register getrennt Datei größer ist als der dritte Spalt Wert drucken.

Natürlich könnte ich mit Perl oder Python, aber awk macht es so viel einfacher mit einem kurzen Einzelzeilenbefehl.

Auch das Lernen awk ist ziemlich preiswert. Sie können als eine Stunde awk Grundlagen in weniger lernen, es ist also nicht so viel Aufwand wie andere Programmier- / Skriptsprache zu lernen.

Ich benutze AWK gelegentlich mit HTML zu tun. Zum Beispiel dieser Code übersetzt Tabellen in CSV-Dateien:

BEGIN {s=""; FS="n"}
/<td/ { gsub(/<[^>]*>/, ""); s=(s ", " $1);}
/<tr|<TR/ { print s; s="" }

Das ist sehr gut, wenn Sie Screen Scraping sind. Eigentlich könnte es der Fall sein, dass ich AWK lieben, weil es mir erlaubt, die falsche Lösung für die Probleme zu bauen, so schnell :) rel="noreferrer">.

Ich awk jeden Einsatz so oft. Es ist gut für sehr einfachen Text Schlurfen in der Mitte einer Pipeline; es füllt eine sehr enge Nische direkt zwischen ihr überhaupt nicht benötigen und benötigen Perl / Python zücken / was auch immer.

Ich würde nicht raten, eine ganze Menge Zeit damit verbringen, aber es könnte nützlich sein, die Grundlagen der Syntax wissen - zumindest genug, dass Sie das Handbuch konsultieren können schnell sollte man sich nur wünschen, es zu benutzen .

Die meisten awk Einzeiler mit Perl Einzeiler erreicht werden - wenn Sie in eine Perl-Einzeiler Mentalität zu bekommen. Oder nur Perl drei Liner verwenden:)

Wenn Sie Shell-Skripte von jemandem geschrieben sind beibehalten, die awk gefallen hat, dann klar, Sie gehen awk zu lernen brauchen.

Auch wenn es keine praktische Notwendigkeit, wenn Sie bereits regex wissen, es wird nicht lange dauern, die Grundlagen zu holen, und es macht Spaß zu sehen, wie die Dinge damals entworfen wurden. Es ist ziemlich elegant.

Wenn Sie bereits kennen und nutzen sed, dann kann man auch wählen zumindest ein bisschen awk auf. Sie können für einige ziemlich starke Tricks verrohrt werden. Immer beeindruckt das Publikum.

6 Jahre, nachdem diese Frage ich jetzt mit Sicherheit beantworten kann. Nein, awk Lernen ist es nicht wert

Grundlegende Aufgaben sind Griff, aber einfach bash Befehle oder sogar GUI-Tools leicht. Komplexere Aufgaben werden leicht mit einer modernen dynamischen Sprachen wie Python (FAV oder Mine) oder Ruby in Angriff genommen werden.

Sie sollten auf jeden Fall eine mordern scripting dynamische Sprache lernen, wie es Ihnen in so viele Aufgaben helfen (Web, admin, Daten Knirschen, Automatisierung, etc). Und so lernt, ein Werkzeug tun wie awk völlig nutzlos ist, wird es Ihnen am besten ein paar Sekunden spart jeden Monat.

Computer vor kurzem hat eine Interview mit Alfred V. Aho (ein die drei Macher von AWK) über AWK. Es ist eine ziemlich interessante Lektüre. Vielleicht finden Sie einige Hinweise darin finden, warum es eine gute Idee, AWK lernen.

Learning AWK für mich in meinem letzten Vertrag arbeitet auf einem Embedded-Linux-System von unschätzbarem Wert war, auf dem weder Perl noch die meisten anderen Skriptsprachen installiert wurde.

Es ist sinnvoll ist vor allem, wenn Sie gelegentlich müssen analysieren Log-Dateien für Daten oder Ausgabe von Programmen, während Shell-Skripten, weil es sehr einfach ist, in awk zu erreichen, dass das würde Sie ein wenig mehr Zeilen Code in Python.

Es hat sicherlich mehr Leistung als das, aber dies scheint Aufgaben die meisten Leute es verwenden, um zu sein.

Natürlich: Ich bin in einer Umgebung zu arbeiten, wo die einzigen verfügbaren Sprachen sind: (einige shity Sprache, die COBOL generiert, OMG, OMG), bash (alte Version), Perl (ich es noch nicht Master), sed, awk, und einige andere Befehlszeilen-Dienstprogramme. Zu wissen, awk mich gerettet mehrere Stunden (und hatte mehrere Textverarbeitungsaufgaben von meinem collegaues erzeugt - kommen sie zu mir mindestens dreimal täglich).

awk hat eine sehr gutes Verhältnis Nutzen / Schwierigkeit, und "einfache awk" funktioniert in jedem Unix / Linux / MacOS (und es kann auch in anderen Systemen installiert werden).

Es wurde im Goldenen Zeitalter entworfen, wenn die Menschen Typisierung gehaßt, so Skripte kann sehr, sehr kurz und schnell zu schreiben. Ich werde versuchen, mawk, eine schnelle Version zu installieren, die angeblich beschleunigt die Berechnung etwa 9 mal, awk / gawk eher langsam ist, wenn Sie so wollen, es zu benutzen, anstatt R usw. Sie möchten mawk.

Ich würde sagen, es ist wahrscheinlich nicht wert mehr. Ich benutze es von Zeit zu Zeit als wesentlich vielseitiger Stream-Editor als mit der Suche Fähigkeiten sed enthalten, aber wenn Sie mit Python beherrschen ich weiß nicht, eine Aufgabe, die Sie schneller zu beenden wären in der Lage, die viel für die Zeit zu kompensieren, benötigt zu lernen, awk.

Der folgende Befehl ist wahrscheinlich der einzige, für die ich awk in den letzten zwei Jahren verwendet haben (es Halb entfernt Pakete von meinem Debian / Ubuntu-Systeme spült):

$ dpkg -l|awk '/^rc/ {print $2}'|xargs sudo dpkg -P

Nein.

Auch wenn es interessant sein könnte, können Sie alles tun, was awk tun können, mit anderen, leistungsfähigeren Tools wie Perl.

Verbringen Sie Ihre Zeit, um die leistungsfähigeren Tools Lernen -. Und nur nebenbei etwas awk auf dem Weg abholen

Ich würde sagen, es ist. Für einfache Sachen, ist AWK viel einfacher auf dem unerfahrenen Sysadmin / Entwickler als Python. Sie können ein wenig AWK lernen und eine Menge Dinge zu tun, zu lernen Python bedeutet eine völlig neue Sprache zu lernen (ja, ich weiß AWK ist eine Sprache, ein Gefühl ist auch).

Perl könnte in der Lage sein, eine Menge Dinge zu tun, tun AWK, aber bot die Wahl in der heutigen Zeit, ich Python hier wählen würde. Also ja, sollten Sie AWK lernen. aber lernen Python zu: -)

Nun, da PERL portiert ist so ziemlich jede wichtige Plattform, würde ich sagen, es ist es nicht wert ist. Es ist vielseitiger als sed und awk zusammen. Wie für Auto-Splitting, können Sie es in Perl wie dies tun können:

perl -F':' -ane 'print $F[3],"\n";' /etc/passwd

EDIT: Sie möchten vielleicht noch bekommen etwas mit awk bekannt, weil einige andere Werkzeuge auf seine Philosophie der musterbasierte Aktionen basieren (z DTrace auf Solaris)

.

ich in dem Bereich arbeiten, sind die Dateien in Spaltenformat. So awk ist mir von unschätzbarem Wert, die Datei so unterschiedliche Software umformatieren zusammenarbeiten können. Für Nicht IT-Beruf, awk mit genug und perfekt. Nun wird ein Tag, ist die Geschwindigkeit des Computers kein Problem, so kann ich kombinieren awk & UNIX Rohr viele 1-Liner in ein „Skript“ befehlen. Mit Awk Suche nach Feld und Datensatz, ich benutze es die Dateidaten sehr schnell zu überprüfen, statt „vi“ eine Datei zu öffnen. Ich muss sagen, awk Fähigkeit besonders Freude meine Arbeit gebracht, ich bin in der Lage Mitarbeiter zu unterstützen, die Dinge schnell awk mit auszusortieren. Erstaunlich Code für mich.

Ich habe versucht, vor kurzem Netzwerk PCAP-Dateien Protokollierung eine DoS-Attacke, die über 20Gbs betragen sichtbar zu machen. Ich brauchte den Zeitstempel und die IP-Adressen. In meinem Szenario AWK Einzeiler arbeitete fabulously und ziemlich schnell auch. Ich speziell verwendet AWK die extrahierten Dateien zu reinigen, die IP-Adressen und die Gesamtpaketanzahl von diesen IP-Adressen innerhalb gruppierte Zeitspanne erhalten. Ich bin vollkommen einverstanden mit dem, was andere Leute über geschrieben haben. Es hängt von Ihren Bedürfnissen.

awk ist ein Powertool Sprache, so dass Sie gehen, um wahrscheinlich awk finden wird verwendet, irgendwo, wenn Sie ein IT-Profi jeglicher Art sind. Wenn Sie die Syntax und regulären Ausdrücken von grep und sed umgehen kann, dann sollten Sie kein Problem haben, awk Aufnehmen und es ist wahrscheinlich lohnen.

Wo ich gefunden habe, leuchtet awk wirklich ist, die Dinge zu vereinfachen, wie die Verarbeitung mehrzeiligen Aufzeichnungen und Mangeln / Interpolations-mehrere Dateien gleichzeitig.

Ein Grund NICHT awk zu lernen, ist, dass es nicht nicht gierige Spiele in regulären Ausdrücken hat.

Ich habe einen awk-Code, den ich jetzt nur umschreiben muss, weil ich, dass plötzlich ausgetestet es nicht so etwas wie nicht-gierige Spiele in awk ist / glotzt so kann es nicht richtig einige regulären Ausdrücke auszuführen.

Es hängt von Ihren Teamkollegen und Sie Führer und die Aufgabe, die Sie gerade arbeiten.

if( team mates and leader ask to write awk ){
  if( you can reject that){
    if( awk code is very small){
      learn little just like learn Regex
    }else{
      use python or even java
    }
  }else{
    do as they ask
  }
}

Ich habe derzeit einige Codierung in Python getan. Aber ich weiß noch nicht, es gut genug, um leicht zu bedienen für einfache off-Datei Transformationen.

Mit awk kann ich schnell eine einzeilige Stück Code auf der Kommandozeile Unix entwickeln, die ein paar ziemlich Rascheln Transformationen der Fall ist. Jedes Mal, wenn ich awk verwenden, ich das Stück Code schreiben wird Einweg- und nicht mehr als ein paar Zeilen lang. Vielleicht eine „if“ -Anweisung und „printf“ Erklärung hier oder dort auf der einer Linie.

Ich habe noch nie ein Stück Code geschrieben, die mehr als 10 Zeilen lang mit awk ist. Ich sah einige solche Skripte Jahren.

Aber alles, was viele Zeilen Code benötigt, würde ich zu Python zurückgreifen.

Ich liebe awk. Es ist ein sehr mächtiges Werkzeug in Kombination mit sed.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top