Je suis tombé sur ce post qui explique mon problème. Supposons quil existe un fichier appelé file.txt qui contient « foo World ».
La réponse publiée par Tyler en explique beaucoup mais je ne sais pas comment

cat file.txt | grep "foo" 

est similaire à

grep "foo" file.txt 

Je pensais que grep nécessitait le suivant

grep input argument // input is the string to search for (i.e) foo and // argument is the file path (./file.txt) 

Maintenant, la sortie de cat file.txt est le contenu du fichier qui est foo World cela devient lentrée de grep? Ai-je raison? Si tel est le cas, je pensais que grep nécessitait un chemin de fichier sous forme de chaîne?

Commentaires

  • Dans le grep(1) page de manuel (type man grep), vous verrez «grep [options] PATTERN [FILE …]». Le fait que «FILE» soit suivi de «…» signifie quil peut y avoir plusieurs arguments de fichier; le fait quil soit entre crochets ([]) signifie que largument file est facultatif (cest-à-dire quil ny a pas être nimporte lequel). Continuez à lire et vous verrez «  Grep recherche les FICHIERS dentrée nommés (ou lentrée standard si aucun fichier nest nommé, ou le nom de fichier - est donné)…. » Donc: si aucun fichier nest spécifié, grep recherche lentrée standard.

Réponse

La plupart des commandes peuvent gérer input qui « est soit un fichier quils doivent ouvrir pour entrée, soit comme un flux de données qui » est passé à la commande via STDIN.

Lorsque le contenu de cat file.txt est envoyé à une autre commande via un tube (|) la sortie via STDOUT qui « est passé au tube sur le côté gauche, est configuré et envoyé à la commande qui « est sur le côté droit du tube » STDIN.

Si le contenu nest pas transmis via STDOUT -> STDIN via un tube, alors les commandes peuvent recevoir des données en ouvrant des fichiers qui sont passés par nom via arguments de ligne de commande.

Exemples

Envoie la sortie à STDOUT.

$ cat file 1 2 3 4 5 

Sortie de cat file est envoyé via STDOUT au STDIN de grep » via le tube.

$ cat file | grep 5 5 

Traitement du fichier comme argument de ligne de commande.

$ grep 5 file 5 

Traitement du contenu du fichier via STDIN directement.

$ grep 5 < <(cat file) 5 

Ici, je « m démontrant que le contenu de file peut être dirigé vers grep via STDIN ci-dessus.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *