เป็นไปได้ไหมที่จะส่งสตริงที่ค่อนข้างใหญ่ไปgrep
หรือสามารถยอมรับไฟล์ได้เท่านั้น?
โปรดทราบว่าฉันไม่ได้พูดถึงการส่งออก pip ไปยัง grep แต่ทำสิ่งที่ชอบ:
grep 'hello' 'hello world'
(ซึ่งแน่นอนว่าใช้งานไม่ได้อย่างน้อยก็ไม่เป็นเช่นนั้น)
เป็นไปได้ไหมที่จะส่งสตริงที่ค่อนข้างใหญ่ไปgrep
หรือสามารถยอมรับไฟล์ได้เท่านั้น?
โปรดทราบว่าฉันไม่ได้พูดถึงการส่งออก pip ไปยัง grep แต่ทำสิ่งที่ชอบ:
grep 'hello' 'hello world'
(ซึ่งแน่นอนว่าใช้งานไม่ได้อย่างน้อยก็ไม่เป็นเช่นนั้น)
คำตอบ:
มันเป็นไปได้. ลองสิ่งนี้:
grep 'hello' <<< 'hello world'
คุณสามารถส่งผ่านตัวแปรที่มีสตริงแทน:
str='hello world'
grep 'hello' <<< $str
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
สตริงที่มีข้อความมากกว่าหนึ่งบรรทัด คุณสามารถพิมพ์ลงในเชลล์แบบโต้ตอบได้ถ้าต้องการ
หากสิ่งนี้ไม่ตรงกับความต้องการของคุณคุณอาจอธิบายได้ว่าทำไมการไพพ์ถึงไม่ใช่โซลูชันที่ยอมรับได้
ท่อเข้าไป grep
ทำไมไม่เพียงแค่:
echo 'hello world' | grep 'hello'
ดูเพิ่มเติมที่: /programming/2106526/how-can-i-grep-complex-strings-in-variables
grep
? ดังนั้นบางทีสิ่งที่ชอบprintf "various\ntext to grep here" | grep "text"
จะสร้าง "ข้อความถึง grep ที่นี่"