non, ça aurait pas marché :)
mais que fait donc cette ligne me diras-tu ?
alors, bon:
&& est un opérateur séparant deux commandes. Ca fonctionne comme ça:
Si la première commande réussit, le shell lance la seconde, sinon, il la lance pas. Il n'y a donc aucun échange de donnée entre "cat file1 | grep 000124" et "grep 000100"
en reprenant la commande en "pas à pas", ça donne:
le shell lance cat sur le fichier et redirige la sortie standard de cat vers grep qui fait son sale boulot. Donc, quand on arrive au &&, il n'y a déjà plus que les lignes avec 000124 du fichier de départ.
Ensuite, ça dépend de ce que contenait ton fichier.
Si 000124 est effectivement présent dans ton fichier, le grep réussit, et le shell lance la commande grep 000100. Comme il n'y a pas de donnée en entrée pour grep dans cette seconde commande, grep se met en attente sur l'entrée standard.
Si 000124 n'est pas présent dans ton fichier, le premier grep renvoie 1, donc le shell ne lance pas la seconde commande et c'est fini.
par contre, on peut utiliser "ou" dans les expressions régulières
un truc comme
$ cat file1 | grep '000124\|000100'
ça aurait marché.
aussi, je me rend compte que ça a pas été explicitement dit dans les réponses, mais tu peux te dispenser du cat
$ grep '000124\|000100' file
donne le même résultat, tout en économisant un appel à cat.
bon, je fais en partie doublon avec la réponse de kolter, mais le commentaire de texte, ça prend du temps ;-)
juste oui, on peut rajouter les débuts de ligne (^) dans la regex
[^] # Re: Et en sed...
Posté par gaaaaaAab . En réponse au message Pour les pros de SED. Évalué à 3.
mais que fait donc cette ligne me diras-tu ?
alors, bon:
&& est un opérateur séparant deux commandes. Ca fonctionne comme ça:
Si la première commande réussit, le shell lance la seconde, sinon, il la lance pas. Il n'y a donc aucun échange de donnée entre "cat file1 | grep 000124" et "grep 000100"
en reprenant la commande en "pas à pas", ça donne:
le shell lance cat sur le fichier et redirige la sortie standard de cat vers grep qui fait son sale boulot. Donc, quand on arrive au &&, il n'y a déjà plus que les lignes avec 000124 du fichier de départ.
Ensuite, ça dépend de ce que contenait ton fichier.
Si 000124 est effectivement présent dans ton fichier, le grep réussit, et le shell lance la commande grep 000100. Comme il n'y a pas de donnée en entrée pour grep dans cette seconde commande, grep se met en attente sur l'entrée standard.
Si 000124 n'est pas présent dans ton fichier, le premier grep renvoie 1, donc le shell ne lance pas la seconde commande et c'est fini.
par contre, on peut utiliser "ou" dans les expressions régulières
un truc comme
$ cat file1 | grep '000124\|000100'
ça aurait marché.
aussi, je me rend compte que ça a pas été explicitement dit dans les réponses, mais tu peux te dispenser du cat
$ grep '000124\|000100' file
donne le même résultat, tout en économisant un appel à cat.
bon, je fais en partie doublon avec la réponse de kolter, mais le commentaire de texte, ça prend du temps ;-)
juste oui, on peut rajouter les débuts de ligne (^) dans la regex