globs ทั้งหมดที่ฉันสามารถใช้กับ grep ในทุบตีคืออะไร?


1

เปลือก Linux และ Unix เหมือนbashอนุญาตให้ใช้ globs เพื่อชื่อไฟล์โดยประมาณและทำให้การค้นหาไฟล์ง่ายขึ้น ฉันทราบสัญลักษณ์ตัวแทน (*) มี globs อื่นใดอีกบ้างbashที่ฉันสามารถใช้กับมันได้grep?


2
grepใช้นิพจน์ทั่วไป เหล่านี้แตกต่างจาก globs grepการใช้งานบางอย่างใช้ globs กับตัวเลือกเช่น--exclude=GLOBแต่ฉันคิดว่าตัวเลือกเหล่านี้ไม่จำเป็นต้องใช้โดย POSIX ดังนั้นคุณไม่ควรคิดgrepว่ารู้อะไรเกี่ยวกับ globs
Kamil Maciorowski

@KamilMaciorowski ผมทราบความแตกต่างระหว่าง globs และ regex แต่ผมก็รู้สึกว่า GNU grep สนับสนุน globs โดยค่าเริ่มต้น (แม้จะมีgrep -F) เช่นเดียวกับคำสั่งอื่น ๆ bashมากที่สุดใน
Hashim

2
"เหมือนกับคำสั่งอื่น ๆ ส่วนใหญ่ในbash" - grepไม่ใช่คำสั่ง "ในbash" แต่สามารถเรียกใช้งานแยกต่างหากที่คุณสามารถเรียกใช้โดยไม่มีเชลล์หากคุณรู้วิธี คุณควรแยกความแตกต่างระหว่าง globs ที่ขยายอย่างละเอียดโดยbashก่อนหน้าgrep(หรือคำสั่งใด ๆ ที่เรียกใช้ในเชลล์) แม้จะเรียกใช้จาก globs, นิพจน์ทั่วไปหรือสิ่งอื่นใดที่สนับสนุนโดยคำสั่งนั้น
Kamil Maciorowski

2
เชลล์จะขยาย globs ก่อนส่งผ่านไปยังgrepรายการอาร์กิวเมนต์ ดังนั้นgrep -f *.txtจะขยายไปสู่สิ่งที่ชอบgrep -f file1.txt file2.txt file3.txtและgrepจะตีความfile1.txtว่าเป็นไฟล์เพื่ออ่านรูปแบบการค้นหาจากและfile2.txtและfile3.txtเป็นไฟล์เพื่อค้นหารูปแบบเหล่านั้น grepไม่มีความคิดใด ๆ ที่มีรูปแบบ glob เกี่ยวข้อง แต่เพียงรู้ว่ามันมีสตริง "-f", "file1.txt", "file2.txt" และ "file3.txt" เป็นอาร์กิวเมนต์
Gordon Davisson

1
เรียกset -xใช้ (ใช้set +xเพื่อเปลี่ยนกลับในภายหลัง) จากนั้นเรียกใช้grep -f *.txt 1>/dev/null 2>/dev/null(การเปลี่ยนเส้นทางเป็นเพียงการทำให้คำสั่งเงียบเอง) สิ่งที่คุณเห็นหลังจากนั้น+คือคำสั่งจริง ลองในไดเรกทอรีที่มีไฟล์ตรงกัน 0, 1 หรือมากกว่า คุณจะเห็นสิ่งที่grepได้รับข้อโต้แย้งจริง ๆ
Kamil Maciorowski
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.