suchen mit cat

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
Benutzeravatar
sommernacht
Beiträge: 13
Registriert: 16.09.2021 09:11:47

suchen mit cat

Beitrag von sommernacht » 18.09.2021 21:49:04

Hallo

wenn ich mit

cat Textdatei.txt | grep "TURN OFF" | wc

eine datei durchsuche

gibt er mir aus wie viele TURN OFF es in der Textdatei gibt.

wenn die Textdatei nun so geschrieben ist

# TURN OFF
TURN OFF
# TURN OFF
TURN OFF
# TURN OFF
# TURN OFF
TURN OFF

wie kann ich nur nach den TURN OFF suche die zu beginn kein Hashtag-Symbol # haben oder umgekehrt
my cat has escaped

Benutzeravatar
bluestar
Beiträge: 2336
Registriert: 26.10.2004 11:16:34
Wohnort: Rhein-Main-Gebiet

Re: suchen mit cat

Beitrag von bluestar » 18.09.2021 21:54:27

Nutze das Caret Zeichen:

Code: Alles auswählen

grep „^TURN OFF“

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: suchen mit cat

Beitrag von eggy » 18.09.2021 21:59:36

leicht offtopic:
Zu "cat | grep ..." gibts den Spruch "useless use of cat" (gilt auch bei vielen anderen Konstrukten der Art "cat | irgendwas").
grep kann nämlich direkt benutzt werden: "grep suchmuster dateiname"

Benutzeravatar
sommernacht
Beiträge: 13
Registriert: 16.09.2021 09:11:47

Re: suchen mit cat

Beitrag von sommernacht » 18.09.2021 22:47:06

danke für die Antworten



"useless use of cat" :)

https://youtu.be/xR6HXL2kOcA


Bild
my cat has escaped

Benutzeravatar
hikaru
Moderator
Beiträge: 13559
Registriert: 09.04.2008 12:48:59

Re: suchen mit cat

Beitrag von hikaru » 18.09.2021 23:51:27

@sommernacht:
Solche Threads machen Spaß! Du präsentierst eine Aufgabenstellung, zeigst, dass du dir darüber Gedanken gemacht hast und stellst basierend auf deinen Überlegungen eine konkrete Frage. Gerne mehr davon! :THX:
sommernacht hat geschrieben: ↑ zum Beitrag ↑
18.09.2021 22:47:06
"useless use of cat" :)

https://youtu.be/xR6HXL2kOcA
Eher das hier ;) :
https://www.netmeister.org/misc/useless_use.pdf

Über "useless use of cat" solltest du dir aber im Moment noch nicht zu viele Gedanken machen. Das Thema im Hinterkopf zu haben ist gut, aber wenn es für dich mit cat einfacher ist, dann nutze es ruhig.

Benutzeravatar
Meillo
Moderator
Beiträge: 8782
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: suchen mit cat

Beitrag von Meillo » 19.09.2021 09:10:51

hikaru hat geschrieben: ↑ zum Beitrag ↑
18.09.2021 23:51:27
@sommernacht:
Solche Threads machen Spaß! Du präsentierst eine Aufgabenstellung, zeigst, dass du dir darüber Gedanken gemacht hast und stellst basierend auf deinen Überlegungen eine konkrete Frage. Gerne mehr davon! :THX:
:THX:
hikaru hat geschrieben: ↑ zum Beitrag ↑
18.09.2021 23:51:27
sommernacht hat geschrieben: ↑ zum Beitrag ↑
18.09.2021 22:47:06
"useless use of cat" :)

https://youtu.be/xR6HXL2kOcA
Eher das hier ;) :
https://www.netmeister.org/misc/useless_use.pdf
Oder das hier: https://www.ulm.ccc.de/ccc/chaosseminar ... rformance/ ;-)

(Im Gegensatz zu den meisten finde ich diese ``useless'' uses of cat gar nicht schlimm, sondern recht natuerlich und darum sinnvoll.)


Edit: Und hier noch die Useful uses of cat:
https://www.in-ulm.de/~mascheck/various/uuoc/
Use ed once in a while!

Benutzeravatar
hikaru
Moderator
Beiträge: 13559
Registriert: 09.04.2008 12:48:59

Re: suchen mit cat

Beitrag von hikaru » 19.09.2021 09:47:49

Meillo hat geschrieben: ↑ zum Beitrag ↑
19.09.2021 09:10:51
Oder das hier: https://www.ulm.ccc.de/ccc/chaosseminar ... rformance/ ;-)
Da gibt's aber keine lustigen Katzenbilder. ;)

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: suchen mit cat

Beitrag von eggy » 19.09.2021 10:09:21

Schlimm find ich es auch nicht, aber nach meiner Erfahrung hat sich bei einigen Leuten nen Knoten im Gehirn gelöst, als sie merkten, dass die Pipe auch nur ein -zusätzliches- Mittel zur Dateneingabe ist. Wenn auch ein sehr cooles :mrgreen:
Ich hatte immer wieder Leute, bei denen sich "programm PIPE ... und was nun?" festgefangen hat. Das ging mal soweit, dass ich mehrere Tage gebraucht hab, jemanden sein "cat datei.txt | cat" abzugewöhnen. Der Typ war nicht doof, bei dem hatte sich nur das Muster mit der Pipe so festgefressen, dass es richtig Arbeit war, das wieder zu fixen.

Die Pipe ist superwichtig und ganz klar die beste Erfindung seit geschnitten Brot, aber sie nutzt einem Nichts, wenn man die Möglichkeiten der Endpunkte nicht kennt. Wichtig ist daher, dass nen Anfänger lernt, die Manpages zu nutzen, man sich immer mal wieder vergewissert, was KANN das Progrämmchen alles? Manchmal kommt Neues dazu, manchmal vergisst man was, manchmal kennt man was nicht, weil man genau dieses eine Feature noch nie gebraucht hat und man es deswegen bisher nicht auf dem Schirm hat, etc.

Ist immer wieder ne schöne Überraschung, wenn man bei Tools die man schon gefühlte 20 Jahre nutzt was Neues entdeckt

... genug Offtopic und damit der Thread nochmal was sinnvolles zu grep hat:

Ein paar der Parameter die man bei grep unbedingt kennen sollte: i und v

Code: Alles auswählen

 grep -i turn  Textdatei.txt | grep -v "#" 
oder besser (das braucht man im echten Adminleben nämlich häufiger):

Code: Alles auswählen

 grep -i turn Textdatei.txt | grep -v "^#" 
bzw das da

Code: Alles auswählen

 grep -i turn Textdatei.txt | grep -v "^[[:space:]]*#" 

Edit: fehlendes * eingefügt, Danke fürs Aufpassen @Meillo :THX:
Edit2: noch nen : eingefügt, nochmal Danke @Meillo
Edit2.5: und das m/M auch noch ... nicht mein Tag :oops:
Zuletzt geändert von eggy am 19.09.2021 11:48:15, insgesamt 1-mal geändert.

Benutzeravatar
Meillo
Moderator
Beiträge: 8782
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: suchen mit cat

Beitrag von Meillo » 19.09.2021 10:36:07

eggy hat geschrieben: ↑ zum Beitrag ↑
19.09.2021 10:09:21
Schlimm find ich es auch nicht, aber nach meiner Erfahrung hat sich bei einigen Leuten nen Knoten im Gehirn gelöst, als sie merkten, dass die Pipe auch nur ein -zusätzliches- Mittel zur Dateneingabe ist. Wenn auch ein sehr cooles :mrgreen:
Ich hatte immer wieder Leute, bei denen sich "programm PIPE ... und was nun?" festgefangen hat.
An dem Punkt anzusetzen macht sicher Sinn. Ich finde es jedoch am Anfang ganz hilfreich von links nach rechts zu denken, die Pipe wie ein Wasserrohr zu verstehen und da beginnen wir eben ganz links mit der Quelle, also:

Code: Alles auswählen

cat Datei |
... und dann stueckeln wir schrittweise Rohrstuecke (Filter) dran ... so lange bis das rauskommt was wir haben wollen.

Dies schafft eine schoene Trennung zwischen Datenquelle und Umformprogrammen (Filtern), die ich paedagogisch sinnvoll finde. Dass die ganzen Filterprogramme auch Datenquellen lesen koennen ist mehr eine praktische Sache, die erfahrenere User nutzen, sie verwaessert aber die Klarheit des Pipes-and-Filters-Modells und der strikten von-links-nach-rechts Datenflussrichtung.

Zuerst wuerde ich versuchen, Pipelines und das Anstueckeln von Filtern zu lehren, jeweils mit der generischen cat-Datenquelle am Anfang. Im zweiten Schritt wuerde ich Stdin/Stdout/Stderr erklaeren und damit Ein-/Ausgabeumleitungen (ohne Stderr-Umleitungen). Dann kann man naemlich auch das machen:

Code: Alles auswählen

cat Datei | grep ...
<Datei grep ...

... | cat >Ausgabedatei
... | grep ... >Ausgabedatei
Je generischer, also baukastenartiger, ohne Sonderfaelle und Syntactic Sugar, desto einfacher fuer Neulinge, moechte ich behaupten.

Erst im dritten Schritt wuerde ich erklaeren, dass Programme als Argumente uebergebene Dateien lesen, und wenn keine uebergeben werden, dann Stdin. Diese Konvention, die uns vollkommen in Fleisch und Blut uebergegangen ist, enthaelt naemlich eine Menge Komplexitaet, die wir gar nicht mehr erkennen. Ignoriert man anfangs die Tatsache, dass Filterprogramme auch Dateiargumente bekommen koennen, dann muss man sich naemlich nicht mit sowas rumschlagen:

Code: Alles auswählen

grep foo Datei | sort -n Datei2 Datei3 | wc -l Datei 4
... viel Spass dabei, den Anfaengern zu erklaeren, warum das in dem Fall jetzt aber nicht geht! Das kann man naemlich erst verstaendlich machen, wenn sie die Ein- und Ausgabekanaele verstanden haben, dazu sollten sie aber erstmal ein Gefuehl fuer Pipelines entwickelt haben.

Aus diesen Gruenden halte ich cat als generische Datenquelle fuer ein didaktisch sinnvolles Hilfsmittel, das keinesfalls verteufelt werden sollte, da es zudem auch konzeptionell viel schoener ist. Einzig aus Sicht der Zeitperformance ist es schlechter ... was wiederum der Grund ist, warum UUOC aus der Perl-Community heraus entstanden ist (... was ich auch in meinem Vortrag erklaere).
Use ed once in a while!

Antworten