เมื่อใดจึงควรใช้ egrep แทน grep


8

ตอนนี้ฉันกำลังเตรียมตัวสำหรับการประเมินเทอร์มินัล Linux ฉันลองใช้ Google และพบว่าทรัพยากรส่วนใหญ่อ้างถึง "grep" พื้นฐานมากกว่า "egrep" ที่ทรงพลังมากกว่า - นั่นคืออย่างน้อยสิ่งที่อาจารย์พูดในการบรรยาย

ฉันมักจะทำงานกับกลุ่มตัวอย่างเล็ก ๆ เสมอดังนั้นการปรับแต่งประสิทธิภาพก็เป็นเรื่องที่ไกลเกินไป

ดังนั้นโดยทั่วไปฉันต้องการทราบว่ามีพื้นที่ใดบ้างที่ฉันต้องเปลี่ยนเป็น egrep เพื่อทำในวิธีที่ดีกว่า ปลอดภัยหรือไม่ที่จะทำงานกับ "grep" พื้นฐานในตอนนี้ จะมีความเสี่ยงหรือไม่?

ขออภัยเกี่ยวกับความรู้ที่ จำกัด ของฉันเกี่ยวกับคำสั่งเชลล์ Linux หน้า man ดูเหมือนจะเป็นเขาวงกตและโดยสุจริตฉันไม่ได้ใช้เวลามากในการทำความเข้าใจคุณสมบัติทั้งหมดที่ทั้งสองคำสั่งให้

คำตอบ:


10

egrep = grep -E

จากhttp://www.opengroup.org/onlinepubs/007908799/xcu/grep.html

"จับคู่โดยใช้นิพจน์ทั่วไปแบบขยายให้ถือว่าแต่ละรูปแบบที่ระบุไว้เป็น ERE ดังที่อธิบายไว้ในข้อกำหนด XBD, Extended Normal Expressions หากรูปแบบ ERE ใด ๆ ตรงกับบรรทัดอินพุตบรรทัดนั้นจะถูกจับคู่

ดังนั้นด้วย egrep +, ?, | and ()คุณสามารถใช้


@omfgroflmao: นั่นคือความแตกต่างทั้งหมดหรือไม่ ดีตอนนี้ฉันรู้สึกสะดวกสบายที่จะมุ่งเน้นไปที่บทเรียน "grep" โดยไม่ต้องกังวลเกี่ยวกับคำสั่ง "egrep" :) ขอบคุณสำหรับเคล็ดลับของคุณ!

1
ไม่ว่าคุณจะเรียกมันว่าegrepหรือgrep -Eนิพจน์ปกติที่ขยายเพิ่มโดยทั่วไปจะทำให้รูปแบบที่ซับซ้อนสั้นลงและทำให้อ่านง่ายขึ้นโดยการลบ `` จำนวนมากออก มันไม่เกี่ยวกับประสิทธิภาพ แต่เป็นวิธีที่ดีกว่าในบางแง่
Cascabel

5

egrep เลิกใช้แล้ว grep -Eใช้ โปรดทราบว่าgrepพบรูปแบบสตริงสำหรับคุณ ถ้าคุณต้องการที่จะทำบางสิ่งบางอย่างกับสายอักขระของคุณหลังจากค้นหาพวกเขาแล้วคุณต้องไปป์ไปยังเครื่องมือการประมวลผลสตริงเช่นawk(หรือเปลือก) เครื่องมือที่คุณ Alos ควรมีลักษณะเป็นเป็นawkเป็นawkสตริงพบสำหรับคุณเช่นกันเหมือนgrepและไม่ประมวลผลสำหรับคุณถ้าคุณต้องการ มันมีทุกสิ่ง grep / sed / etc ทำในเครื่องมือที่มีประโยชน์


@ ghostdog74: ahhh ดังนั้น egrep ไม่แนะนำให้ใช้ ... ฉันคิดว่ามันเป็นการแทนที่ grep ... ขอบคุณสำหรับเคล็ดลับของคุณ!

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