Est-il possible de passer une chaîne relativement longue à grep
ou peut-il uniquement accepter un fichier?
Notez que je ne parle pas de la sortie de tuyauterie vers grep, mais plutôt de faire quelque chose comme:
grep 'hello' 'hello world'
(ce qui ne fonctionne bien sûr pas, du moins pas comme ça)
C'est possible. Essaye ça:
grep 'hello' <<< 'hello world'
Vous pouvez également passer une variable contenant une chaîne à la place:
str='hello world'
grep 'hello' <<< $str
grep
n'a pas l'option d'interpréter ses arguments de ligne de commande en tant que texte à rechercher. La méthode normale pour grep
une chaîne consiste à la canaliser vers l'entrée standard de grep
:
$ echo 'There once was a man from Nantucket
Who kept all his cash in a bucket.
But his daughter, named Nan,
Ran away with a man
And as for the bucket, Nantucket.' | grep -i nan
There once was a man from Nantucket
But his daughter, named Nan,
And as for the bucket, Nantucket.
$
Comme vous le voyez ici, vous pouvez echo
chaînes contenant plus d'une ligne de texte. Vous pouvez même les saisir de manière interactive dans le shell, si vous le souhaitez.
Si cela ne répond pas à vos besoins, vous pourriez peut-être expliquer pourquoi la tuyauterie n'est pas une solution acceptable.
Ajoutez-le dans grep
Pourquoi pas simplement:
echo 'hello world' | grep 'hello'
Voir aussi: https://stackoverflow.com/questions/2106526/how-can-i-grep-complex-strings-in-variables