ส่งสตริง (ใหญ่) ไปที่ 'grep' แทนชื่อไฟล์


26

เป็นไปได้ไหมที่จะส่งสตริงที่ค่อนข้างใหญ่ไปgrepหรือสามารถยอมรับไฟล์ได้เท่านั้น?

โปรดทราบว่าฉันไม่ได้พูดถึงการส่งออก pip ไปยัง grep แต่ทำสิ่งที่ชอบ:

grep 'hello' 'hello world'

(ซึ่งแน่นอนว่าใช้งานไม่ได้อย่างน้อยก็ไม่เป็นเช่นนั้น)


บางทีอาจส่งข้อมูลแบบข้อความไปที่grep? ดังนั้นบางทีสิ่งที่ชอบprintf "various\ntext to grep here" | grep "text"จะสร้าง "ข้อความถึง grep ที่นี่"
อเล็กซ์

คำตอบ:


31

มันเป็นไปได้. ลองสิ่งนี้:

grep 'hello' <<< 'hello world'

คุณสามารถส่งผ่านตัวแปรที่มีสตริงแทน:

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

5
สำหรับการอ้างอิงนี้เป็นที่นี่สตริง คุณสามารถอ่านเพิ่มเติมที่นี่
Rockallite

1
อ้างอิงจาก wiki: มีให้ในbash , kshหรือzsh
hoijui

13

grepไม่มีตัวเลือกในการตีความอาร์กิวเมนต์บรรทัดคำสั่งเป็นข้อความที่จะค้นหา วิธีปกติของgrepสตริงคือไพพ์สตริงลงในgrepอินพุตมาตรฐานของ:

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

ตามที่คุณเห็นที่นี่คุณสามารถechoสตริงที่มีข้อความมากกว่าหนึ่งบรรทัด คุณสามารถพิมพ์ลงในเชลล์แบบโต้ตอบได้ถ้าต้องการ

หากสิ่งนี้ไม่ตรงกับความต้องการของคุณคุณอาจอธิบายได้ว่าทำไมการไพพ์ถึงไม่ใช่โซลูชันที่ยอมรับได้


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.