Diese Frage wurde von einer Diskussion über Stackoverflow inspiriert - siehe insbesondere den Kommentarthread unter Ed Mortons Antwort .
Ich nahm an, dass dies der Ort war, an dem ich eine endgültige Antwort bekommen konnte:
In welchen Situationen empfehlen Sie die Verwendung von Perl anstelle von awk für komplexe Textverarbeitungsaufgaben (Datei)?
Ich suche speziell nach Beispielen, bei denen Perl auch nicht
- Macht etwas möglich, was mit awk nicht möglich ist
- Effizientere (schnellere) Implementierung einer bestimmten Operation
- Das Ergebnis sind besser lesbare und leichter zu pflegende Skripte
Ich bin mir bewusst, dass dies eine Frage vom Typ "Meinung / Diskussion / Religion" sein könnte. Ich hoffe jedoch, dass die drei oben genannten Kriterien einen objektiven Vergleich der Vorteile dieser beiden Instrumente ermöglichen. Erkenne auch, dass ich auf diese Frage als Person mit beträchtlicher Erfahrung mit 'nix komme, aber keine formale Ausbildung; Ich "lerne Dinge, wie ich sie brauche" und frage mich, ob es einen Grund gibt, mich in Perl zu vertiefen und es zu lernen.
Update auf ein paar Kommentare basierend, möchte ich die Frage erweitern:
Gibt es bestimmte Perl-Bibliotheken, die Sie häufig verwenden und mit denen Sie bei einer Reihe von Problemen über awk nach Perl greifen können?
perl
wenn ich es bereits benutzeawk
?". IMO, wenn Sie nicht generell an der Programmierung interessiert sind, sondern lediglich System-Tools zum Ausführen von Verwaltungsaufgaben wie dem Parsen von Text benötigen, dann nein. Wenn Sie jedoch allgemeine Programmieraufgaben haben und noch keine der in * nix-Umgebungen (Perl, Python oder Ruby) allgegenwärtigen dynamisch typisierten, interpretierten OO-Mehrzwecksprachen verwenden, sollten Sie dies tun. Es ist jedoch nicht erforderlich, mehr als einen dieser drei Punkte zu lernen.Antworten:
Perl (das Pathologisch Eclectic Rubbish Lister) ist die jüngste Software und versucht , Features von zu schaffen
sed
,grep
undawk
. Einige Systeme verwenden Perl immer noch nicht, daher müssen Sie es immer noch verwendenawk
.Wenn Sie kleine kurze Skripte haben,
awk
ist dies schneller, da nicht viel RAM verwendet wird. Aber diese Frage ist heutzutage eher unwichtig.Perl hat den Vorteil, eine riesige Bibliothek zu verwenden, zum Beispiel bignum:
Die Lesbarkeit des Codes ist immer ein Attribut des Autors. Sie können gut lesbaren Code schreiben, der nicht von der von Ihnen verwendeten Sprache abhängt.
quelle
awk
hängt davon ab, was Sie damit machen.bc
allerdings verwenden - ich halte dies nicht für eine "Textverarbeitungs" -Aufgabe.echo 'scale=16; 7 / 17 * 2 ^ 1024' | bc
.p,-50
gibt die Genauigkeit und die negativen Werte bedeuten eine feste Anzahl von Ziffern nach dem Punkt.bc
Befehl, wie ich ihn verwendet habe, nur auf die ersten 15 Stellen genau war:740226584943306
- Vermutlich, weil dies die Anzahl der Präzisionsstellen ist, die während des Gleitkomma-Teils der Operation übertragen wurden. Interessant.