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

Vorteile der Cat'ing-Datei und der Weiterleitung an grep

Katze besser meiden; Schreiben Sie es so, wenn die Zeilenbearbeitung wichtig ist:

$ < filename grep pattern

Der Grund dafür ist, dass das Pushen aller Daten durch cat Speicher- und CPU-Ressourcen kostet. Ein weiterer Vorteil, den Dateinamen als Argument zu übergeben, anstatt stdin umzuleiten, besteht darin, dass es dem Befehl die Option gibt, die Datei zu mmap().


Ich kann nicht glauben, dass noch niemand auf "Useless Use of Cat" http://www.smallo.ruhr.de/award.html verwiesen hat

Es gibt einen fragwürdigen Vorteil. Wenn Sie eine lange Pipeline haben, sieht es mit cat etwas orthogonaler aus:

cat file | command1 | command 2 | command3

Es fasst alle Befehle zusammen.

Natürlich, wie andere gesagt haben (und ich tue es)

< file command1 | command2 | command3

Führt so ziemlich das Gleiche durch. Allerdings ist cat ziemlich klein und wird Ihren Computer nicht herunterfahren, wenn Sie ihn verwenden, wenn Sie ihn nicht wirklich brauchen.

Normalerweise mit cat vs direkt auf eine Datei zu schlagen ändert nichts, aber es macht einen Unterschied für bestimmte Befehle, die sich darum kümmern, ob es mehrere Dateien als Argumente gibt, wie zum Beispiel grep . Typisches Beispiel:

cat file1 file2 | grep SOMETHING

hat eine andere Ausgabe als

grep SOMETHING file1 file2

Welche die übereinstimmenden Dateinamen in der Ausgabe haben. Manchmal möchte ich die Dateinamen nicht, und es ist ein Vorteil, cat zu verwenden .


Es gibt keinen Vorteil. Dass der Cursor am Ende steht, spielt auch keine Rolle, wenn Sie ihn stattdessen so strukturieren:< inputfile grep -args foo


Linux
  1. Zeilen zwischen (und einschließlich) zwei Mustern drucken?

  2. Unterschied zwischen Katze und „>“, um eine Datei auf Null zu setzen?

  3. Cut / Grep und Df -h?

  4. Grep und Schwanz -f?

  5. Warum wird der Dateideskriptor nur einmal geöffnet und gelesen?

Cat-Befehl unter Linux

Bearbeiten von Text mit sed und grep

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

50 Produktiver und praktischer grep-Befehl für Linux-Enthusiasten

Dateinamen basierend auf einem Dateinamenmuster und Dateiinhalt auflisten?

Wie grep \n in Datei