Pase una cadena (grande) a 'grep' en lugar de un nombre de archivo

25

¿Es posible pasar una cadena relativamente grande grepo solo puede aceptar un archivo?

Tenga en cuenta que no estoy hablando de la salida de tubería a grep, sino de hacer algo como:

grep 'hello' 'hello world'

(que por supuesto no funciona, al menos no así)

usuario2018084
fuente
¿Quizás canalizar algún tipo de datos de texto grep? Entonces, tal vez algo así printf "various\ntext to grep here" | grep "text"produzca "texto para grep aquí"
Alex

Respuestas:

30

Es posible. Prueba esto:

grep 'hello' <<< 'hello world'

También puede pasar una variable que contiene una cadena en su lugar:

str='hello world'
grep 'hello' <<< $str
Kiki Luqman Hakiem
fuente
55
Como referencia, esta es una cadena aquí . Puedes leer más aquí .
Rockallite
1
cita de wiki: disponible en bash , ksh o zsh
hoijui
13

grepno tiene una opción para interpretar sus argumentos de línea de comandos como texto para buscar. La forma normal de grepuna cadena es canalizar la cadena en grepla entrada estándar de:

$ 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.
$

Como puede ver aquí, puede echousar cadenas que contengan más de una línea de texto. Incluso puede escribirlos en el shell de forma interactiva, si lo desea.

Si esto no satisface sus necesidades, ¿podría explicar por qué las tuberías no son una solución aceptable?

Kenster
fuente