Truyền chuỗi (lớn) cho 'grep' thay vì tên tệp


26

Có thể truyền một chuỗi tương đối lớn đến grephoặc chỉ có thể chấp nhận một tệp?

Lưu ý rằng tôi không nói về đầu ra đường ống cho grep, nhưng làm một cái gì đó như:

grep 'hello' 'hello world'

(tất nhiên là không hoạt động, ít nhất là không như vậy)


Có thể ống một số loại dữ liệu văn bản để grep? Vì vậy, có thể một cái gì đó giống như printf "various\ntext to grep here" | grep "text"sẽ tạo ra "văn bản cho grep ở đây"
Alex

Câu trả lời:


31

Điều đó là có thể. Thử đi:

grep 'hello' <<< 'hello world'

Bạn cũng có thể truyền một biến chứa chuỗi thay thế:

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

5
Để tham khảo, đây là một chuỗi ở đây . Bạn có thể đọc thêm ở đây .
Rockallite

1
trích dẫn từ wiki: có sẵn trong bash , ksh hoặc zsh
hoijui

13

grepkhông có tùy chọn để diễn giải các đối số dòng lệnh của nó dưới dạng văn bản cần tìm kiếm. Cách thông thường đối với grepmột chuỗi là chuyển chuỗi thành grepđầu vào tiêu chuẩn của:

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

Như bạn thấy ở đây, bạn có thể echochuỗi chứa nhiều hơn một dòng văn bản. Bạn thậm chí có thể gõ chúng vào vỏ một cách tương tác, nếu bạn muốn.

Nếu điều này không đáp ứng nhu cầu của bạn, có lẽ bạn có thể giải thích tại sao đường ống không phải là giải pháp chấp nhận được?


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.