จากman grepหน้า (บน Debian):
รายละเอียด
grep searches the named input FILEs (or standard input if no files are
named, or if a single hyphen-minus (-) is given as file name) for lines
containing a match to the given PATTERN. By default, grep prints the
matching lines.
ในกรณีแรกให้grepเปิดไฟล์ ในครั้งที่สองเชลล์เปิดไฟล์และกำหนดให้กับอินพุตมาตรฐานของgrepและgrepไม่ถูกส่งผ่านอาร์กิวเมนต์ชื่อไฟล์ใด ๆ สมมติว่าจำเป็นต้อง grep อินพุตมาตรฐาน
ข้อดีของ 1:
grep สามารถ grep มากกว่าหนึ่งไฟล์ได้
grepสามารถแสดงชื่อไฟล์ที่แต่ละครั้งที่lineพบ
ข้อดีของ 2:
ในแง่ของประสิทธิภาพหากไม่สามารถเปิดไฟล์ได้คุณบันทึกการทำงานgrepเมื่อใช้การเปลี่ยนเส้นทาง แต่อย่างอื่นสำหรับgrepฉันไม่ได้คาดหวังความแตกต่างมากนัก
ด้วยการเปลี่ยนเส้นทางคุณจะไม่ต้องทะเลาะโต้เถียงกันอีกgrepแล้วทำให้การgrepแยกวิเคราะห์ง่ายขึ้นเล็กน้อย ในอีกทางหนึ่งเชลล์จะต้องการ (อย่างน้อย) การเรียกใช้ระบบเพิ่มเติมไปdup2()ยัง file descriptor ไปยัง file descriptor 0
ใน{ grep -m1 line; next command; } < file, grep(ที่นี่ GNU grep) จะต้องการที่จะseek()กลับไปหลังจากการจับคู่สายเพื่อให้next commandเห็นส่วนที่เหลือของไฟล์ (มันยังจะต้องตรวจสอบว่าไฟล์เป็น seekable หรือไม่) กล่าวอีกนัยหนึ่งตำแหน่งภายใน stdin คือgrepผลลัพธ์อีกตัวหนึ่งของ ด้วยgrep -m1 line fileก็สามารถเพิ่มประสิทธิภาพให้เห็นว่าที่สิ่งที่น้อยกว่าหนึ่งgrepในการดูแลเกี่ยวกับ
หมายเหตุ
¹ด้วยzshคุณสามารถทำได้:
grep line < file1 < file2
แต่นั่นเป็นการทำงานที่เทียบเท่าcat file1 file2 | grep line(โดยไม่ต้องเรียกใช้catยูทิลิตี้) และมีประสิทธิภาพน้อยกว่านั้นอาจทำให้เกิดความสับสนหากไฟล์แรกไม่ได้ลงท้ายด้วยอักขระขึ้นบรรทัดใหม่และจะไม่แจ้งให้คุณทราบว่าไฟล์ใดที่พบรูปแบบ
²ในกรณีksh93และbashแม้ว่าจะมีไฟล์เช่น /dev/tcp/host/port(และ/dev/fd/xในบางระบบbash) ซึ่งเมื่อใช้ในเป้าหมายของการเปลี่ยนเส้นทางเชลล์จะถูกสกัดกั้นเพื่อวัตถุประสงค์พิเศษแทนที่จะเปิดไฟล์บนระบบไฟล์จริงๆ (แม้ว่าโดยทั่วไปจะเป็นไฟล์เหล่านั้น ไม่มีอยู่ในระบบไฟล์) /dev/stdinจุดมุ่งหมายเดียวกับที่-ได้รับการยอมรับโดยgrepแต่อย่างน้อยนี่ก็ namespaced ถูกกว่า (ใคร ๆ ก็สามารถสร้างไฟล์ชื่อ-ในไดเรกทอรีใด ๆ ในขณะที่ผู้ดูแลระบบเท่านั้นสามารถสร้างไฟล์ที่เรียกว่า/dev/tcp/host/portและผู้บริหารควรรู้ดีกว่า)