GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Was sind die Unterschiede zwischen grep, awk und sed?

Ich möchte nur eine Sache erwähnen, es gibt viele Tools, die Textverarbeitung durchführen können, z. ..

Sie sind sehr praktisch, aber Sie müssen ihre Optionen lernen usw.

Ein fauler Weg (nicht der beste Weg), Textverarbeitung zu lernen, könnte sein:Lernen Sie nur grep , sed und awk. Mit diesen drei Tools können Sie fast 99 % der Textverarbeitungsprobleme lösen und müssen sich die oben genannten verschiedenen Befehlszeilen und Optionen nicht merken. :)

UND wenn Sie die drei gelernt und angewendet haben, kennen Sie den Unterschied. Tatsächlich bedeutet der Unterschied hier, welches Tool welche Art von Problem gut lösen kann.

ein faulerer Weg könnte das Erlernen einer Skriptsprache (Python, Perl oder Ruby) sein und jede Textverarbeitung damit durchführen.


Kurzdefinition:

grep :nach bestimmten Begriffen in einer Datei suchen

#usage
$ grep This file.txt
Every line containing "This"
Every line containing "This"
Every line containing "This"
Every line containing "This"

$ cat file.txt
Every line containing "This"
Every line containing "This"
Every line containing "That"
Every line containing "This"
Every line containing "This"

Jetzt awk und sed sind komplett anders als grep .awk und sed sind Textverarbeitungsprogramme. Sie haben nicht nur die Fähigkeit, das zu finden, wonach Sie im Text suchen, sondern auch den Text zu entfernen, hinzuzufügen und zu ändern (und vieles mehr).

awk wird hauptsächlich für die Datenextraktion und Berichterstellung verwendet. sed ist ein Stream-Editor
Jeder von ihnen hat seine eigene Funktionalität und Besonderheiten.

Beispiel
Sed

$ sed -i 's/cat/dog/' file.txt
# this will replace any occurrence of the characters 'cat' by 'dog'

Okay

$ awk '{print $2}' file.txt
# this will print the second column of file.txt

Basis awk Verwendungszweck:
Berechne Summe/Durchschnitt/Max/Min/usw. was auch immer Sie brauchen.

$ cat file.txt
A 10
B 20
C 60
$ awk 'BEGIN {sum=0; count=0; OFS="\t"} {sum+=$2; count++} END {print "Average:", sum/count}' file.txt
Average:    30

Ich empfehle Ihnen, dieses Buch zu lesen:Sed &Awk:2nd Ed.

Es wird Ihnen helfen, ein kompetenter sed/awk-Benutzer in jeder Unix-ähnlichen Umgebung zu werden.


Grep ist nützlich, wenn Sie schnell nach übereinstimmenden Zeilen in einer Datei suchen möchten. Es kann auch einige andere einfache Informationen wie übereinstimmende Zeilennummern, Anzahl der Übereinstimmungen und Dateinamenslisten zurückgeben.

Awk ist eine vollständige Programmiersprache, die darauf aufgebaut ist, Dateien im CSV-Stil zu lesen, die Datensätze zu verarbeiten und optional einen Ergebnisdatensatz auszudrucken. Es kann viele Dinge tun, aber es ist nicht das einfachste Werkzeug für einfache Aufgaben.

Sed ist nützlich, wenn Sie Änderungen an einer Datei basierend auf regulären Ausdrücken vornehmen möchten. Es ermöglicht Ihnen, Teile von Linien einfach abzugleichen, Änderungen vorzunehmen und Ergebnisse auszudrucken. Es ist weniger ausdrucksstark als awk, aber dadurch lässt es sich für einfache Aufgaben etwas einfacher verwenden. Es hat viele kompliziertere Operatoren, die Sie verwenden können (ich denke, es wird sogar vollständig), aber im Allgemeinen werden Sie diese Funktionen nicht verwenden.


Linux
  1. MySQL vs. MariaDB:Was sind die Hauptunterschiede zwischen ihnen?

  2. Debian vs. Ubuntu:Was sind die Unterschiede?

  3. Warum betrachtet Grep eine Datei als binär?

  4. pfSense vs Netgear Router:Was sind die Hauptunterschiede?

  5. Fedora vs. Ubuntu:Was sind die Hauptunterschiede?

Cassandra vs. MongoDB – Was sind die Unterschiede?

Terraform vs. Kubernetes:Was sind die Unterschiede?

Docker ADD vs. COPY:Was sind die Unterschiede?

IMAP vs. POP3 vs. SMTP:Was sind die Unterschiede?

So löschen Sie leere Zeilen in Dateien mit Grep, Sed und Awk

useradd vs. adduser:Was sind die Unterschiede?