เกร็ป

จากวิกิพีเดีย สารานุกรมเสรี
grep
ผู้ออกแบบKen Thompson[1][2]
นักพัฒนาAT&T Bell Laboratories
วันที่เปิดตัวพฤศจิกายน 1973; 50 ปีที่แล้ว (1973-11)[1]
ภาษาที่เขียนC
ระบบปฏิบัติการUnix, Unix-like, Plan 9, Inferno, OS-9, MSX-DOS, IBM i
แพลตฟอร์มCross-platform
ประเภทCommand

เกร็ป (grep) เป็นโปรแกรมอรรถประโยชน์บรรทัดคำสั่งสำหรับการค้นหาชุดข้อมูลข้อความธรรมดาสำหรับบรรทัดที่ตรงกับนิพจน์ทั่วไป ชื่อของมันมาจากคำสั่ง ed คือ g/re/p (global / regular expression search / and print) ซึ่งมีผลเช่นเดียวกัน[3][4] grep เดิมได้รับการพัฒนาสำหรับระบบปฏิบัติการยูนิกซ์แต่ต่อมาสามารถใช้งานได้กับระบบเหมือนยูนิกซ์ทั้งหมดและบางระบบอื่น เช่น OS-9 [5]

การนำไปใช้[แก้]

มีการการอิมพลีเมนต์ grep หลากหลายเจ้า ทั้งในระบบปฏิบัติการและสิ่งแวดล้อมการพัฒนาซอฟต์แวร์จำนวนมาก เวอร์ชันแรกๆ ได้แก่ egrep และ fgrep ซึ่งเปิดตัวใน Unix เวอร์ชัน 7[6] ตัวแปร "egrep" รองรับไวยากรณ์นิพจน์ปรกติที่เพิ่มโดย Alfred Aho หลังจากการนำนิพจน์ทั่วไปดั้งเดิมของ Ken Thompson ไปใช้งาน[7] ตัวแปร "fgrep" ค้นหาในรายการของสตริงคงที่ใดๆ โดยใช้ขั้นตอนวิธีการจับคู่สตริง Aho–Corasick [8] ไบนารีของตัวแปรเหล่านี้มีอยู่ในระบบสมัยใหม่ โดยปกติแล้วจะเชื่อมโยงไปยัง grep หรือการเรียก grep เป็นเชลล์สคริปต์โดยมีการเพิ่มแฟล็กที่เหมาะสม เช่น exec grep -E "$@"

egrep และ fgrep แม้จะใช้งานทั่วไปบนระบบ POSIX จนถึงจุดที่ข้อกำหนด POSIX กล่าวถึงการมีอยู่อย่างแพร่หลาย แต่จริงๆ แล้วมิได้เป็นส่วนหนึ่งของ POSIX[9]

คำสั่งอื่นๆ มีคำว่า "grep" เพื่อระบุว่าเป็นเครื่องมือค้นหา ซึ่งโดยทั่วไปจะใช้การจับคู่นิพจน์ทั่วไป ตัวอย่างเช่น ยูทิลิตี้ pgrep จะแสดงกระบวนการที่มีชื่อตรงกับนิพจน์ทั่วไปที่กำหนด [10]

ในภาษาเพิร์ล grep คือชื่อของฟังก์ชันในตัวที่ค้นหาองค์ประกอบในรายการที่ตรงตามคุณสมบัติบางอย่าง[11] โดยทั่วไปฟังก์ชันลำดับที่สูงกว่านี้จะมีชื่อว่า filter หรือ where ในภาษาอื่น

คำสั่ง pcregrep คือการนำ grep ไปใช้ซึ่งใช้ไวยากรณ์ นิพจน์ทั่วไปของ Perl[12] ฟังก์ชันที่คล้ายกันสามารถเรียกใช้ได้ใน grep เวอร์ชัน GNU พร้อมด้วยแฟล็ก -P[13]

พอร์ต ของ grep (ภายใน Cygwin และ GnuWin32 เป็นต้น) ยังทำงานบนไมโครซอฟท์ วินโดวส์ นอกจากนี้วินโดวส์บางเวอร์ชันมีคำสั่ง qgrep หรือ findstr ที่คล้ายกัน [14]

คำสั่ง grep ยังเป็นส่วนหนึ่งของ เครื่องมือ MSX-DOS2 ของ ASCII สำหรับ MSX-DOS เวอร์ชัน 2 [15]

ที่grep ,egrep และfgrepคำสั่ง ยังถูกย้ายไปยังระบบปฏิบัติการ IBM i อีกด้วย [16]

ซอฟต์แวร์ Adobe InDesign มีฟังก์ชัน GREP (ตั้งแต่เวอร์ชัน CS3 (2007)[17]) ในกล่องโต้ตอบ ค้นหา/เปลี่ยนแปลง [18] แท็บ "GREP" และนำมาใช้กับ InDesign CS4[19] ใน รูปแบบย่อหน้า[20] "GREP สไตล์".

agrep[แก้]

agrep (approximate grep, grep โดยประมาณ) จะจับคู่แม้ว่าข้อความจะพอดีกับรูปแบบการค้นหา โดยประมาณ เท่านั้น

คำสั่งต่อไปนี้จะค้นหา netmasks ในไฟล์ myfile แต่ยังรวมไปถึงคำอื่น ๆ ที่สามารถนำมาจากคำนี้ได้ โดยจะมีการแทนที่ไม่เกินสองครั้ง

agrep -B netmasks myfile

ตัวอย่างนี้สร้างรายการการจับคู่ที่ใกล้เคียงที่สุด ซึ่งเป็นรายการที่มีการเปลี่ยนตัวน้อยที่สุดแสดงไว้เป็นอันดับแรก แฟล็กคำสั่ง B หมายถึง best :

agrep -B netmasks myfile

การใช้เป็นคำกริยา[แก้]

ในเดือนธันวาคม พ.ศ. 2546 Oxford English Dictionary Online ได้เพิ่ม "grep" เป็นทั้งคำนามและคำกริยา[21]

การใช้เป็นคำกริยาทั่วไปคือวลี "คุณไม่สามารถ grep ต้นไม้ที่ตายแล้วได้" ซึ่งหมายความว่าเราสามารถค้นหาผ่านสื่อดิจิทัลได้ง่ายกว่าโดยใช้เครื่องมือเช่น grep มากกว่าการค้นหาด้วยกระดาษ (เช่นที่ทำจาก "ต้นไม้ที่ตายแล้ว" ซึ่งในบริบทนี้ถือเป็นคำดูหมิ่นสำหรับกระดาษ) [22]

ดูเพิ่ม[แก้]

อ้างอิง[แก้]

  1. 1.0 1.1 Kernighan, Brian (1984). The Unix Programming Environment. Prentice Hall. pp. 102. ISBN 0-13-937681-X.
  2. “grep was a private command of mine for quite a while before i made it public.” -Ken Thompson เก็บถาวร 2015-05-26 ที่ เวย์แบ็กแมชชีน, By Benjamin Rualthanzauva, Published on Feb 5, 2014, Medium
  3. Hauben et al. 1
  4. Raymond, Eric. "grep". Jargon File. คลังข้อมูลเก่าเก็บจากแหล่งเดิมเมื่อ 2006-06-17. สืบค้นเมื่อ 2006-06-29.
  5. Paul S. Dayan (1992). The OS-9 Guru - 1 : The Facts. Galactic Industrial Limited. ISBN 0-9519228-0-7.
  6. อ้างอิงผิดพลาด: ป้ายระบุ <ref> ไม่ถูกต้อง ไม่มีการกำหนดข้อความสำหรับอ้างอิงชื่อ reader
  7. Hume, Andrew (1988). "A Tale of Two Greps". Software: Practice and Experience. 18 (11): 1063. doi:10.1002/spe.4380181105.
  8. Meurant, Gerard (12 Sep 1990). Algorithms and Complexity. Elsevier Science. p. 278. ISBN 9780080933917. เก็บจากแหล่งเดิมเมื่อ 4 March 2016. สืบค้นเมื่อ 12 December 2015.
  9. "grep". www.pubs.opengroup.org. The Open Group. เก็บจากแหล่งเดิมเมื่อ 28 November 2015. สืบค้นเมื่อ 12 December 2015.
  10. "pgrep(1)". www.linux.die.net. เก็บจากแหล่งเดิมเมื่อ 22 December 2015. สืบค้นเมื่อ 12 December 2015.
  11. "grep". www.perldoc.perl.org. เก็บจากแหล่งเดิมเมื่อ 7 December 2015. สืบค้นเมื่อ 12 December 2015.
  12. "pcregrep man page". www.pcre.org. University of Cambridge. เก็บจากแหล่งเดิมเมื่อ 23 December 2015. สืบค้นเมื่อ 12 December 2015.
  13. "grep(1)". www.linux.die.net. เก็บจากแหล่งเดิมเมื่อ 10 December 2015. สืบค้นเมื่อ 12 December 2015.
  14. Spalding, George (2000). Windows 2000 administration. Network professional's library. Osborne/McGraw-Hill. pp. 634. ISBN 978-0-07-882582-8. สืบค้นเมื่อ 2010-12-10. QGREP.EXE[:] A similar tool to grep in UNIX, this tool can be used to search for a text string
  15. "MSX-DOS2 Tools User's Manual by ASCII Corporation". April 1993.
  16. IBM. "IBM System i Version 7.2 Programming Qshell" (PDF). IBM (ภาษาอังกฤษ). สืบค้นเมื่อ 2020-09-05.
  17. "Review: Adobe InDesign CS3 - CreativePro.com". creativepro.com. 20 April 2007. เก็บจากแหล่งเดิมเมื่อ 5 January 2018. สืบค้นเมื่อ 24 April 2018.
  18. "InDesign Help: find/change". เก็บจากแหล่งเดิมเมื่อ 2016-08-28. สืบค้นเมื่อ 2016-08-12.
  19. "InDesign: GREP Styles (1) Setting text between parentheses in Italic". เก็บจากแหล่งเดิมเมื่อ 2017-09-24. สืบค้นเมื่อ 2018-01-05.
  20. "InDesign Help: GREP styles". เก็บจากแหล่งเดิมเมื่อ 2016-08-28. สืบค้นเมื่อ 2016-08-12.
  21. "New words list December 2003". Oxford English Dictionary. คลังข้อมูลเก่าเก็บจากแหล่งเดิมเมื่อ 2021-12-06. สืบค้นเมื่อ 2021-12-06.
  22. Jargon File, article "Documentation"
หมายเหตุ 

แหล่งข้อมูลอื่น[แก้]