Berikan string (besar) ke 'grep' alih-alih nama file

26

Apakah mungkin untuk meneruskan string yang relatif besar ke grepatau hanya dapat menerima file?

Perhatikan bahwa saya tidak berbicara tentang output perpipaan ke grep, tetapi melakukan sesuatu seperti:

grep 'hello' 'hello world'

(yang tentu saja tidak berhasil, setidaknya tidak seperti itu)

pengguna2018084
sumber
Mungkin menyalurkan beberapa jenis data teks ke grep? Jadi mungkin sesuatu seperti printf "various\ntext to grep here" | grep "text"akan menghasilkan "teks untuk dilihat di sini"
Alex

Jawaban:

31

Itu mungkin. Coba ini:

grep 'hello' <<< 'hello world'

Anda juga bisa meneruskan variabel yang berisi string:

str='hello world'
grep 'hello' <<< $str
Kiki Luqman Hakiem
sumber
5
Untuk referensi, ini adalah string di sini . Anda dapat membaca lebih lanjut di sini .
Rockallite
1
kutipan dari wiki: tersedia dalam bash , ksh , atau zsh
hoijui
13

greptidak memiliki opsi untuk menafsirkan argumen baris perintah sebagai teks yang akan dicari. Cara normal untuk grepstring adalah menyalurkan string ke grepinput standar:

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

Seperti yang Anda lihat di sini, Anda dapat menggunakan echostring yang berisi lebih dari satu baris teks. Anda bahkan dapat mengetiknya di shell secara interaktif, jika Anda mau.

Jika ini tidak memenuhi kebutuhan Anda, mungkin Anda bisa menjelaskan mengapa perpipaan bukan solusi yang dapat diterima?

Kenster
sumber