Passa una stringa (grande) a 'grep' invece del nome di un file


26

È possibile passare una stringa relativamente grande a grepo può accettare solo un file?

Nota che non sto parlando dell'output di piping su grep, ma sto facendo qualcosa del tipo:

grep 'hello' 'hello world'

(che ovviamente non funziona, almeno non così)


Forse reindirizzare una sorta di dati di testo a grep? Quindi forse qualcosa del genere printf "various\ntext to grep here" | grep "text"produrrà "testo da grep qui"
Alex

Risposte:


31

È possibile. Prova questo:

grep 'hello' <<< 'hello world'

Puoi anche passare una variabile contenente stringa:

str='hello world'
grep 'hello' <<< $str

5
Per riferimento, questa è una stringa qui . Puoi leggere di più qui .
Rockallite,

1
citazione dal wiki: disponibile in bash , ksh o zsh
hoijui il

13

grepnon ha un'opzione per interpretare i suoi argomenti della riga di comando come testo da cercare. Il modo normale per grepuna stringa è reindirizzare la stringa nello grepstandard input:

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

Come vedi qui, puoi echostringhe contenenti più di una riga di testo. Puoi anche digitarli nella shell in modo interattivo, se lo desideri.

Se questo non soddisfa le tue esigenze, potresti forse spiegare perché le tubazioni non sono una soluzione accettabile?


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.