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
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.
grep(1)
page de manuel (typeman 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.