Bir dosya adı yerine 'grep' e (büyük) bir dizge iletin


26

Nispeten büyük bir dizgiyi iletmek mümkün mü, grepyoksa sadece bir dosyayı mı kabul ediyor?

Unutma ki grep için boru çıkışından bahsetmiyorum, ama şöyle bir şey yapıyorum:

grep 'hello' 'hello world'

(hangisi elbette işe yaramıyor, en azından öyle değil)


Belki bir tür metin verisini yönlendirmek için grep? Öyleyse, belki printf "various\ntext to grep here" | grep "text""burada grep metni" gibi bir şey üretecek
Alex

Yanıtlar:


31

Mümkün. Bunu dene:

grep 'hello' <<< 'hello world'

Bunun yerine dizeyi içeren bir değişkeni de iletebilirsiniz:

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

5
Başvuru için, bu burada bir dizedir . Buradan daha fazla okuyabilirsiniz .
Rockallite

1
wiki alıntı: Mevcut içinde bash , ksh veya zsh
hoijui

13

grepkomut satırı argümanlarını aranacak metin olarak yorumlama seçeneğine sahip değildir. grepBir dizgenin normal yolu , dizgiyi grepstandart girişe bağlamaktır :

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

Burada gördüğünüz gibi, echobirden fazla metin satırı içeren dizeler yapabilirsiniz . İsterseniz, onları kabuk içine etkileşimli olarak bile yazabilirsiniz.

Bu ihtiyaçlarınızı karşılamıyorsa, neden borulamanın kabul edilebilir bir çözüm olmadığını açıklayabilirsiniz.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.