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

grep เป็นยูทิลิตี้ค้นหาข้อความบรรทัดคำสั่ง แต่เดิมเขียนสำหรับ Unix มันใช้การแสดงออกปกติเพื่อจับคู่ข้อความและมักจะใช้เป็นตัวกรองในท่อ ใช้แท็กนี้เฉพาะเมื่อคำถามของคุณเกี่ยวข้องกับการเขียนโปรแกรมโดยใช้ grep หรือ grep-based API คำถามที่เกี่ยวข้องกับการใช้หรือการแก้ไขปัญหาตัวเลือกบรรทัดคำสั่ง grep นั้นอยู่นอกหัวข้อ

9
วิธี grep และแทนที่
ฉันต้องการค้นหาสตริงที่ระบุซ้ำภายในไฟล์และไดเรกทอรีย่อยทั้งหมดในไดเรกทอรีและแทนที่สตริงนี้ด้วยสตริงอื่น ฉันรู้ว่าคำสั่งเพื่อค้นหามันอาจมีลักษณะเช่นนี้: grep 'string_to_find' -r ./* แต่ฉันจะแทนที่ทุกอินสแตนซ์ของstring_to_findสตริงอื่นได้อย่างไร
254 linux  grep  replace 

11
วิธีที่รวดเร็วในการค้นหาบรรทัดในไฟล์หนึ่งที่ไม่ได้อยู่ในอีก?
ฉันมีไฟล์ขนาดใหญ่สองไฟล์ (ชุดชื่อไฟล์) ประมาณ 30,000 บรรทัดในแต่ละไฟล์ ฉันพยายามค้นหาวิธีที่รวดเร็วในการค้นหาบรรทัดใน file1 ที่ไม่ปรากฏใน file2 ตัวอย่างเช่นถ้านี่คือ file1: line1 line2 line3 และนี่คือ file2: line1 line4 line5 ดังนั้นผลลัพธ์ / ผลลัพธ์ของฉันควรเป็น: line2 line3 งานนี้: grep -v -f file2 file1 แต่มันช้ามากเมื่อใช้กับไฟล์ขนาดใหญ่ของฉัน ฉันสงสัยว่ามีวิธีที่ดีในการทำเช่นนี้โดยใช้ diff () แต่ผลลัพธ์ควรเป็นเพียงแค่เส้นไม่มีอะไรอื่นและฉันไม่สามารถหาสวิตช์ได้ ใครช่วยฉันหาวิธีที่รวดเร็วในการทำเช่นนี้โดยใช้ทุบตีและไบนารีลินุกซ์ขั้นพื้นฐาน? แก้ไข: เพื่อติดตามคำถามของฉันนี้เป็นวิธีที่ดีที่สุดที่ฉันได้พบโดยใช้ diff (): diff file2 file1 | grep '^>' | sed 's/^>\ //' …
241 bash  grep  find  diff 

5
วิธีการกลับคำสั่ง grep
นิพจน์ grep ต่อไปนี้แสดงรายการไฟล์. exe และ. html ทั้งหมดในไดเรกทอรีปัจจุบันและไดเรกทอรีย่อยอย่างสมบูรณ์ ls -R |grep -E .*[\.exe]$\|.*[\.html]$ ฉันจะกลับรายการนี้เพื่อแสดงรายการที่ไม่ใช่. html หรือ. exe แทนได้อย่างไร (นั่นคือ, !=.)
237 regex  linux  grep 

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

3
grep โดยไม่แสดงพา ธ / ไฟล์: line
คุณ grep และส่งคืนบรรทัดที่ตรงกันได้อย่างไร ie เส้นทาง / ชื่อไฟล์ถูกตัดออกจากผลลัพธ์ ในกรณีนี้ฉันต้องการค้นหาไฟล์. bar ทั้งหมดในไดเรกทอรีปัจจุบันค้นหาคำว่า FOO find . -name '*.bar' -exec grep -Hn FOO {} \;
234 linux  unix  grep  find 

19
ฉันจะหา `find 'เพื่อละเว้นไดเรกทอรี. svn ได้อย่างไร
ฉันมักจะใช้findคำสั่งเพื่อค้นหาผ่านซอร์สโค้ดลบไฟล์อะไรก็ตาม น่ารำคาญเพราะการโค่นล้มเก็บข้อมูลที่ซ้ำกันของแต่ละไฟล์ใน.svn/text-base/ไดเรกทอรีการค้นหาที่เรียบง่ายของฉันจบลงด้วยการได้รับผลลัพธ์ซ้ำซ้อนมากมาย ตัวอย่างเช่นฉันต้องการค้นหาแบบซ้ำuintหลายครั้งmessages.hและหลายmessages.cppไฟล์: # find -name 'messages.*' -exec grep -Iw uint {} + ./messages.cpp: Log::verbose << "Discarding out of date message: id " << uint(olderMessage.id) ./messages.cpp: Log::verbose << "Added to send queue: " << *message << ": id " << uint(preparedMessage->id) ./messages.cpp: Log::error << "Received message with invalid SHA-1 hash: …
227 linux  find  bash  grep  svn 

13
วิธีค้นหาเนื้อหาของไฟล์ PDF หลายไฟล์?
ฉันจะค้นหาเนื้อหาของไฟล์ PDF ในไดเรกทอรี / ไดเรกทอรีย่อยได้อย่างไร ฉันกำลังมองหาเครื่องมือบรรทัดคำสั่ง ดูเหมือนว่าgrepไม่สามารถค้นหาไฟล์ PDF

9
makeinfo คืออะไรและฉันจะรับได้อย่างไร
ฉันกำลังพยายามสร้าง grep GNU และเมื่อฉันเริ่มทำฉันจะได้รับ: [snip] /bin/bash: line 9: makeinfo: command not found makeinfo คืออะไรและฉันจะรับได้อย่างไร (นี่คือ Ubuntu ถ้ามันสร้างความแตกต่าง)
223 ubuntu  gcc  makefile  grep 

5
วิธีการดำเนินการ grep ในไฟล์ทั้งหมดในไดเรกทอรี
ทำงานกับ xenserver และฉันต้องการดำเนินการคำสั่งในแต่ละไฟล์ที่อยู่ในไดเรกทอรีทำให้สิ่งต่าง ๆ ออกมาจากคำสั่งและต่อท้ายมันลงในไฟล์ ฉันชัดเจนในคำสั่งที่ฉันต้องการใช้และวิธีการ grep out สตริงตามที่ต้องการ แต่สิ่งที่ฉันไม่ชัดเจนคือฉันจะใช้คำสั่งนี้กับแต่ละไฟล์ได้อย่างไรไปยังไฟล์ถัดไปจนกระทั่งไม่พบไฟล์เพิ่มเติม
219 linux  shell  grep 

11
จะแสดงเฉพาะบรรทัดถัดไปหลังจากจับคู่ได้อย่างไร
grep -A1 'blah' logfile ขอบคุณคำสั่งนี้สำหรับทุกบรรทัดที่มี 'blah' อยู่ในนั้นฉันได้รับเอาต์พุตของบรรทัดที่มี 'blah' และบรรทัดถัดไปที่ตามมาใน logfile อาจเป็นวิธีที่ง่าย แต่ฉันไม่สามารถหาวิธีเว้นบรรทัดที่มี 'blah' และแสดงเฉพาะบรรทัดถัดไปในผลลัพธ์ได้
218 awk  sed  grep 

21
จับคู่สองสตริงในหนึ่งบรรทัดด้วย grep
ฉันพยายามใช้grepเพื่อจับคู่บรรทัดที่มีสองสตริงที่แตกต่างกัน ฉันลองต่อไปนี้ แต่ตรงกับบรรทัดที่มีทั้งstring1 หรือ string2ซึ่งไม่ใช่สิ่งที่ฉันต้องการ grep 'string1\|string2' filename ดังนั้นฉันจะจับคู่กับgrepบรรทัดที่มีทั้งสองสตริงได้อย่างไร
218 regex  linux  string  grep 

8
ฉันจะมี grep ไม่พิมพ์ข้อผิดพลาด 'ไม่มีไฟล์หรือไดเรกทอรีดังกล่าวได้อย่างไร?
ฉันกำลัง grepping ผ่านกองขนาดใหญ่ของรหัสที่จัดการโดย git และเมื่อใดก็ตามที่ฉันทำ grep ฉันเห็นกองและกองของข้อความของแบบฟอร์ม: > grep pattern * -R -n whatever/.git/svn: No such file or directory มีวิธีใดที่ฉันจะทำให้เส้นเหล่านั้นหายไป?
215 grep 


2
วิธีการระงับผลการจับคู่ไฟล์ไบนารีใน grep [ปิด]
ปิด. คำถามนี้ไม่เป็นไปตามหลักเกณฑ์กองมากเกิน ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน3 ปีที่ผ่านมา ปรับปรุงคำถามนี้ เมื่อใช้grepใน linux ผลลัพธ์มักจะมี "ไฟล์ไบนารี XXX ตรงกัน" ซึ่งฉันไม่สนใจ จะระงับส่วนนี้ของผลลัพธ์ได้อย่างไรหรือจะแยกไบนารีไฟล์เป็น grep ได้อย่างไร
215 linux  grep 

25
จะหารูปแบบข้ามหลายบรรทัดโดยใช้ grep ได้อย่างไร
ฉันต้องการค้นหาไฟล์ที่มี "abc" และ "efg" ตามลำดับและทั้งสองสตริงนั้นอยู่ในบรรทัดที่ต่างกันในไฟล์นั้น เช่นไฟล์ที่มีเนื้อหา: blah blah.. blah blah.. blah abc blah blah blah.. blah blah.. blah blah.. blah efg blah blah blah blah.. blah blah.. ควรจับคู่
208 regex  grep 

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