Gibt es ein grundlegendes Tutorial für grep, awk und sed? [geschlossen]

95

Ich bin seit einiger Zeit Linux-Benutzer und verstehe die meisten gängigen Befehlszeilendienstprogramme recht gut. Doch diejenigen , die nach oben und wieder in Bezug auf die Programmierung kommen sind grep, awkund sed.

Das Einzige, wofür ich grep verwendet habe, ist das Einlesen von Inhalten, um Dateien in Protokolldateien, die Ausgabe von psusw. zu finden, die ich nicht awkoder sedüberhaupt nicht verwendet habe. Gibt es gute Tutorials für diese Dienstprogramme?

Macha
quelle
Ich habe es immer aufgeschoben, Regex zu lernen, weil ich mir selbst sage, dass ich es eines Tages lernen werde, indem ich Kleenes Originalartikel über Logik lese, die das Konzept erfunden hat, bevor es in Computern weit verbreitet wurde.
ixtmixilix
Ich stimme mit gvkv: Wenn Sie diese lernen müssen, könnte man genauso gut lernen Perl, es tut , was grep, sedund awktun (und in fast der gleichen Art und Weise) und vieles mehr an der Spitze.
Reinierpost
Ich mag immer thegeekstuff.com. Sie schneiden direkt zu den Beispielen, im Gegensatz zu der üblichen manSeite, die sich wie 90% Fußnoten anfühlt.
Isomorphismen

Antworten:

19

Das O'Reilly Sed und Awk Buch ist großartig für Er Sed und Awk.


quelle
11

Ich habe ein Buch über sed- Definitive Guide to sed - geschrieben, das ein Tutorial enthält. Es deckt vollständig sed, sowie die dazugehörigen Befehle wie grep, tr, headund tail. Deckt auch reguläre Ausdrücke besser ab, als ich es anderswo gesehen habe.

Ich stimme anderen zu, dass es sehr wichtig ist, reguläre Ausdrücke gut zu verstehen. Ich stimme auch zu, dass sedes am besten für einfachere Aufgaben geeignet ist und komplexere Skripte schnell undeutlich werden.

Ich bin nicht der Meinung, dass dies awkveraltet ist, im Gegenteil. Es ist wie bei vielen Unix-Dingen (zB vi), es gibt eine Lernkurve, aber es lohnt sich.

Ich bin mit dem Vorschlag nicht einverstanden, awkanstelle von zu verwenden grep. Ergibt meiner Erfahrung nach keinen Sinn. grepist so toll und einfach.

Daniel Goldman
quelle
Ich bin der grepMeinung, dass Sie den Traktor nicht auf der Autobahn fahren dürfen, wenn Sie ihm helfen können. Und es ist auch ein ziemlich gutes Buch - danke.
mikeserv
3

Das von O'Rielly herausgegebene Kochbuch für reguläre Ausdrücke würde ausreichen, um Sie in jeder Sprache, die sie verwendet, an einen beliebigen Ort zu bringen.

ixtmixilix
quelle
3

Die Autoren des Buches sind Kernigan und Pike. Der Titel ist so etwas wie "The Unix Programming Environment".

Das Buch, aus dem ich tatsächlich gelernt habe, hieß "Eine Einführung in Berkely Unix".

HandyGandy
quelle
2

Wenn Sie eines von diesen 3 (grep, sed und awk) lernen möchten , können Sie einfach awk / gawk lernen . . awk kann die Funktionen von grep und sed ausführen, z. B. Regex zum Suchen / Ersetzen von Text und vieles mehr, da es sich auch um eine Programmiersprache handelt. Wenn Sie sich mit Gawk / Awk auskennen, müssen Sie grep / sed / wc / cut usw. nicht verwenden. Nur ein Tool erledigt dies.

user1606
quelle
Übrigens brauchen wir nicht einmal awk, Sie können einfach g++ -x c++ - -o /tmp/prog && /tmp/progIhre Befehle verwenden und eingeben. Ein Werkzeug, um sie alle zu beherrschen! :-)
Lie Ryan
1
Wer braucht einen Compiler, wenn man die Binärdatei einfach direkt in eine Datei schreiben kann? Katze wird tun, oder ed, wenn Sie sich faul fühlen.
cas
1

Meiner Meinung nach ist awk mehr oder weniger obsolet (andere werden sich jedoch stark dagegen aussprechen). Die meisten Leute, die ich heutzutage kenne, verwenden stattdessen eine Skriptsprache wie Perl oder heute oft Python für fortgeschrittene Textmanipulationen. sed ist großartig für einfachere Textbearbeitungsaufgaben, ich benutze es die ganze Zeit. Ich habe es hauptsächlich durch einen Blick auf sed Einzeiler wie die unter http://sed.sourceforge.net/sed1line.txt gelernt . Hinsichtlich grep: Nun, Sie möchten im Grunde ein solides Verständnis für reguläre Ausdrücke erhalten (auch für sed erforderlich). Ich habe hier nur die texinfo-Handbücher benutzt.

fschmitt
quelle
10
awk ist immer noch sehr nützlich, um Daten zu manipulieren, die von anderen Befehlen stammen. Für die einfache Verwendung über die Befehlszeile würde ich es noch nicht für veraltet halten.
MaQleod
Aufgrund von POSIX sollte es auch auf vielen Systemen verfügbar sein.
Echox
1
Das meiste 'Advanced AWK' ist wahrscheinlich besser mit Perl oder Python oder was auch immer zu machen, aber das einfache Zeug ist schön, es nur mit awk zu machen.
User455
1
Awk ist immer noch hilfreich, um verschiedene Antworten zu verstehen, die Sie online finden können, wenn Sie versuchen, ein Problem zu lösen. Sie werden oft Beispiele online finden, die awk-Anweisungen wie verwenden awk '{print $3}'.
Steven D
1
Bei der Arbeit und zu Hause benutze ich awk öfter als sed. Bei festen Tabellendaten kann nichts schlechter sein als die dpkg -lAusgabe. Ich würde nichts entfernt Kompliziertes tun, aber ich würde ein Werkzeug ohne awk kurz sein. Ich kann das nicht für allgemeinere Programmiersprachen sagen, so sehr ich einige von ihnen mag.
JM Becker