คำถามติดแท็ก grep

grep เป็นยูทิลิตีบรรทัดคำสั่ง Unix ที่ค้นหาอินพุตสำหรับการจับคู่บรรทัด (หรือไม่) นิพจน์ทั่วไปและพิมพ์ผลลัพธ์ ใช้แท็กนี้สำหรับคำถามเกี่ยวกับวิธีการใช้คุณสมบัติ grep วิธีการเขียนนิพจน์ทั่วไปที่ทำงานกับ grep และการใช้งานทั่วไป เนื่องจาก grep พร้อมใช้งานในสภาพแวดล้อมคล้าย Unix (เช่น Cygwin บน Windows) คุณจึงสามารถใช้แท็กนี้สำหรับคำถามที่เข้ากันได้และความแตกต่างระหว่างรุ่นและสภาพแวดล้อมของซอฟต์แวร์


9
grep จุดเริ่มต้นของไฟล์?
ในเชลล์ลินุกซ์ฉันต้องการตรวจสอบให้แน่ใจว่าชุดของไฟล์ทั้งหมดเริ่มต้นด้วย<?การมีสตริงที่แน่นอนและไม่มีอักขระอื่น ๆ ที่จุดเริ่มต้น ฉันจะ grep หรือใช้คนอื่นเพื่อแสดง "ไฟล์ที่ขึ้นต้นด้วย" ได้อย่างไร? แก้ไข: ฉันใช้สัญลักษณ์แทนนี้และheadไม่ให้ชื่อไฟล์ในบรรทัดเดียวกันดังนั้นเมื่อฉัน grep มันฉันไม่เห็นชื่อไฟล์ นอกจากนี้"^<?"ดูเหมือนจะไม่ให้ผลลัพธ์ที่ถูกต้อง โดยทั่วไปฉันได้รับสิ่งนี้: $> head -1 * | grep "^<?" <? <? <? <? <? ... ไฟล์ทั้งหมดนั้นดีจริง ๆ

6
การใช้ดัชนีเพื่อทำให้ grep เร็วขึ้น?
ฉันพบว่าตัวเอง grepping codebase เดียวกันซ้ำแล้วซ้ำอีก ในขณะที่ใช้งานได้ดีแต่ละคำสั่งใช้เวลาประมาณ 10 วินาทีดังนั้นฉันจึงคิดว่าจะทำให้เร็วขึ้นได้อย่างไร ดังนั้นสามารถgrepใช้ดัชนีบางประเภทได้หรือไม่? ฉันเข้าใจว่าดัชนีอาจไม่ช่วยให้ regexps ที่ซับซ้อน แต่ฉันใช้ patters ง่าย ๆ ส่วนใหญ่ มีตัวสร้างดัชนีสำหรับกรณีนี้หรือไม่? แก้ไข: ฉันรู้เกี่ยวกับ ctags และชอบ แต่ฉันต้องการค้นหาข้อความแบบเต็ม

3
ฉันจะ grep 50 บรรทัดแรกของแต่ละไฟล์ในไดเรกทอรีซ้ำได้อย่างไร
ฉันต้องการค้นหา 50 บรรทัดแรกของทุกไฟล์ในไดเรกทอรีและไดเรกทอรีย่อย นี่จะทำหน้าที่วนซ้ำ แต่ฉันจะ จำกัด แค่ 50 บรรทัดแรกของแต่ละไฟล์ได้อย่างไร grep -r "matching string here" . ไฟล์เหล่านี้บางไฟล์มีขนาดใหญ่มากและฉันต้องการให้ตรงกันใน 50 บรรทัดแรกเท่านั้น ฉันพยายามเร่งกระบวนการโดยไม่ค้นหาเมกะไบต์ของข้อมูลไบนารีในบางไฟล์
10 linux  unix  grep 

3
ค้นหาและแทนที่เครื่องมือ Mac OS X ด้วยการสนับสนุนการแสดงออกปกติ
ฉันกำลังค้นหานิพจน์ปกติที่ใช้เครื่องมือค้นหา / แทนที่ GUI ที่สามารถจัดการไฟล์ / ไดเรกทอรีย่อยหลาย ๆ ไฟล์ได้เช่นgrepWinแต่สำหรับ Mac OS X PS ฉันรู้เกี่ยวกับ grep และฉันไม่ต้องการเครื่องมือแก้ไข แต่เป็นเครื่องมือแบบสแตนด์อโลน
9 macos  mac  search  grep 

4
เครื่องมือบรรทัดคำสั่งเพื่อค้นหาวลีในไฟล์ PDF จำนวนมาก
ฉันใช้ Opensuse 10.3 และต้องการทราบเครื่องมือบรรทัดคำสั่งเพื่อค้นหาวลีในไฟล์ PDF จำนวนมากภายในไดเรกทอรี ใน Windows XP การค้นหา Explorer อนุญาตสิ่งนี้ แต่ช้าเกินไป มี grep เคล็ดลับที่นี่หรือไม่

3
วิธีรับช่วงประวัติ Bash เชลล์
ฉันจะรับ / กรองรายการประวัติในช่วงที่กำหนดได้อย่างไร ฉันมีไฟล์ประวัติขนาดใหญ่และใช้บ่อย history | grep somecommand ตอนนี้ความทรงจำของฉันค่อนข้างแย่และฉันก็ต้องการที่จะเห็นสิ่งที่ฉันทำในช่วงเวลาที่ฉันป้อนคำสั่ง สำหรับตอนนี้ฉันทำสิ่งนี้: จับคู่พูด4992 somecommandแล้วทำ history | grep 49[0-9][0-9] นี่มักจะดีพอ แต่ฉันอยากจะทำมากกว่านี้อย่างแม่นยำนั่นคือดูคำสั่งจาก 4972 ถึง 5012 นั่นคือ 20 คำสั่งก่อนหน้าและ 20 หลังจากนั้น ฉันสงสัยว่ามีวิธีที่ง่ายกว่านี้ไหม? ฉันสงสัยว่าสคริปต์ที่กำหนดเองนั้นเป็นไปตามลำดับ แต่อาจมีคนอื่นเคยทำสิ่งที่คล้ายกันมาก่อน
9 linux  bash  history  grep 

1
อะไรคือเหตุผลที่แน่นอนที่ `grep 'บน / proc และดิสก์ดิบเป็นความคิดที่ไม่ดี?
ฉันวิ่งgrep -r "searchphrase" /วันนี้และไม่ได้ผล ฉันทำวิจัยและพบว่าfind / -xdev -type f -print0 | xargs -0 grep -H "searchphrase"เป็นแนวทางที่ถูกต้อง ฉันรวบรวม/procและดิสก์เช่น/dev/sda1เป็นผู้ร้ายสำหรับ grep ไม่ประสบความสำเร็จ ฉันจะรักพื้นหลังทางเทคนิคบางอย่างที่ "ทำไม" ฉันคิดว่าลิงก์บางอันภายใน/procสร้างลูปแบบไม่ จำกัด เมื่อสำรวจและฉันอ่านมีเหตุผลมากกว่า แต่ไม่มีอะไรเจาะจง นอกจากนี้จะเกิดอะไรขึ้นเมื่อดิสก์ดิบมีการจาระบี? ข้อมูลไบนารี (ที่สามารถเข้าถึงได้บน/dev/sda1เท่าที่ฉันรู้หรือไม่) ไม่สามารถตีความได้เช่นเดียวmountกับชนิดของระบบแฟ้มที่ทำให้ข้อมูลจากดิสก์เข้าใจได้หรือไม่ ดังนั้นจึงเป็นไปได้ที่จะ grep สำหรับสตริงไบนารีหรือไม่?

2
Grep ใน terminal ของ Mac OS X - แสดงเพียงสีเดียวเท่านั้น
ฉันคุ้นเคยกับ grep ความสามารถในการระบายสีชื่อไฟล์หมายเลขบรรทัดและการจับคู่ตัวเอง สามคนนี้ควรเป็นสีที่ต่างกัน สิ่งนี้ทำงานได้อย่างไม่มีที่ติบนเทอร์มินัล Linux และแม้กระทั่ง MinGW บน Windows แต่ใน OS X แม้ว่าฉันจะตั้ง GREP_COLOR ฉันจะได้สีตามผลลัพธ์ที่ตรงกันเท่านั้น grep รุ่นที่บรรจุพร้อมกับระบบปฏิบัติการเก่าเกินไปหรือไม่ 10.7.3 บน MBA 13 "ด้วย Terminal.app


4
grep ของ Unix ทำงานได้เร็วขึ้นด้วยข้อความค้นหาที่ยาวหรือสั้นหรือไม่
มันเร็วกว่าที่จะมองหาคำค้นหายาวหรือสั้น? หรือส่งผลกระทบต่อความเร็วเลยหรือ? กล่าวอีกนัยหนึ่งคุณควรสร้างข้อความค้นหาที่แน่นอนที่สุดเท่าที่จะเป็นไปได้หรือไม่ มีไฟล์มากกว่า 100,000 ไฟล์และแต่ละไฟล์มีข้อมูลอยู่ระหว่าง 20 และมากกว่า 5,000 แถวของข้อมูล โดยปกติ grep จะใช้เพื่อค้นหาหนึ่งอินสแตนซ์ของคำค้นหา สมมติว่าคำค้นหาคือSEARCHTERMและมันจะอยู่ในแถวเช่นนี้: NAD+DP+1234567890:92++UNIQUE+NAME+SEARCHTERM++12345+FI' การค้นหา "SEARCH" หรือ "SEARCHTERM" เร็วกว่านี้หรือไม่ สมมติว่าในกรณีนี้เราไม่สนใจว่าเราพบการแข่งขันในสายอื่น ๆ ที่ไม่เกี่ยวข้องหรือไม่ นี่คือวิธีที่ฉันทำในปัจจุบัน: grep NAD+DP 123* | grep SEARCHTERM แต่ฉันพบว่ามันค่อนข้างช้า ปกติจะใช้เวลาประมาณ 3-5 นาทีในการค้นหาข้อมูลแม้ว่าฉันจะรู้ชื่อไฟล์คร่าวๆซึ่ง จำกัด ช่วงไว้ที่ประมาณ 10,000 ไฟล์ ดังนั้นข้อความค้นหาที่ยาวขึ้นหรือสั้นลงจะช่วยได้หรือไม่ เท่าที่ฉันรู้ grep มองหา "บล็อก" ของคำที่มีความยาวแน่นอน?



3
การเปรียบเทียบ grin, ack และ rak
หลังจากใช้มาได้ซักพักแล้วฉันพบว่ามันดีกว่าสำหรับจุดประสงค์ในการพัฒนามากกว่า grep แต่แล้วผมเคยได้ยินเกี่ยวกับรักและรอยยิ้ม มีใครใช้ทั้งสามคนและสามารถเปรียบเทียบได้หรือไม่
8 grep  ack 

2
ไพพ์รหัสทางออก grep ออกไป
เมื่อฉันต้องระงับเอาต์พุตบางประเภทเช่น foo | grep -v bar แต่บางครั้ง foo ให้เท่านั้น: bar bar bar... grep จะส่งคืน -1 ฉันจะแปลงรหัสทางออก 1 เป็น 0 ได้อย่างไร
6 grep  pipe  exit 

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