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

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

4
ตรวจสอบว่าเอาต์พุตของคำสั่งมีสตริงที่แน่นอนในเชลล์สคริปต์หรือไม่
ฉันกำลังเขียนเชลล์สคริปต์และฉันกำลังพยายามตรวจสอบว่าผลลัพธ์ของคำสั่งมีสตริงที่แน่นอนหรือไม่ ฉันคิดว่าฉันอาจต้องใช้ grep แต่ฉันไม่แน่ใจว่าจะทำอย่างไร มีใครรู้บ้าง?
117 bash  shell  grep 

2
grep ทำงานเร็วแค่ไหน?
ฉันรู้สึกทึ่งมากกับการทำงานของ GREP ในเชลล์ก่อนหน้านี้ฉันเคยใช้วิธีการสตริงย่อยใน java แต่ตอนนี้ฉันใช้ GREP และดำเนินการในเวลาไม่กี่วินาทีมันเร็วกว่าโค้ดจาวาที่ฉันเคยเขียนอย่างเห็นได้ชัด (ตามประสบการณ์ของฉันฉันอาจจะคิดผิด) ที่บอกว่าฉันไม่สามารถเข้าใจได้ว่ามันเกิดขึ้นได้อย่างไร? นอกจากนี้ยังมีไม่มากในเว็บ ใครสามารถช่วยฉันด้วยเรื่องนี้?
113 unix  grep 

5
Grepping ไฟล์ขนาดใหญ่ (80GB) ด้วยวิธีใดเพื่อเพิ่มความเร็ว?
grep -i -A 5 -B 5 'db_pd.Clients' eightygigsfile.sql สิ่งนี้ทำงานเป็นเวลาหนึ่งชั่วโมงบนเซิร์ฟเวอร์ลินุกซ์ที่มีประสิทธิภาพพอสมควรซึ่งไม่ได้โหลดมากเกินไป ทางเลือกอื่นสำหรับ grep หรือไม่? อะไรเกี่ยวกับไวยากรณ์ของฉันที่สามารถปรับปรุงได้ (เช่น egrep, fgrep ดีกว่าไหม) ไฟล์ดังกล่าวอยู่ในไดเร็กทอรีที่แชร์กับการเมานต์ไปยังเซิร์ฟเวอร์อื่น แต่ดิสก์สเปซจริงเป็นแบบโลคัลจึงไม่ควรสร้างความแตกต่าง? grep จับ CPU ได้มากถึง 93%
113 bash  grep 



8
ใช้ grep เพื่อรายงานกลับเฉพาะหมายเลขบรรทัด
ฉันมีไฟล์ที่อาจมีการจัดรูปแบบที่ไม่ถูกต้อง (ในกรณีนี้คือรูปแบบที่เกิดขึ้น\\backslash) ฉันต้องการใช้grepเพื่อส่งคืนเฉพาะหมายเลขบรรทัดที่เกิดเหตุการณ์นี้ (เช่นเดียวกับการจับคู่อยู่ที่นี่ไปที่บรรทัด # x และแก้ไข) อย่างไรก็ตามดูเหมือนจะไม่มีวิธีการพิมพ์หมายเลขบรรทัด ( grep -n) และไม่ใช่วิธีที่ตรงกันหรือบรรทัด ฉันสามารถใช้ regex อื่นเพื่อแยกหมายเลขบรรทัด แต่ฉันต้องการให้แน่ใจว่า grep ไม่สามารถทำได้ด้วยตัวเอง grep -noฉันคิดว่าใกล้เคียงที่สุด แต่ยังคงแสดงการแข่งขัน
106 grep 

12
วิธีทำให้ grep จับคู่เฉพาะเมื่อทั้งบรรทัดตรงกัน?
ฉันมีสิ่งเหล่านี้: $ cat a.tmp ABB.log ABB.log.122 ABB.log.123 ฉันต้องการหา ABB.log ที่ตรงกันทุกประการ แต่เมื่อฉันทำ $ grep -w ABB.log a.tmp ABB.log ABB.log.122 ABB.log.123 มันแสดงให้เห็นทั้งหมด ได้สิ่งที่ต้องการโดยใช้ grep หรือไม่?
104 shell  unix  grep 

5
Regex lookahead สำหรับ 'not ตามด้วย' ใน grep
ฉันพยายาม grep สำหรับทุกกรณีที่Ui\.ไม่ได้ตามด้วยLineหรือแม้แต่ตัวอักษรL อะไรคือวิธีที่เหมาะสมในการเขียนนิพจน์ทั่วไปสำหรับการค้นหาอินสแตนซ์ทั้งหมดของสตริงเฉพาะที่ไม่ตามด้วยสตริงอื่น ใช้ Lookaheads grep "Ui\.(?!L)" * bash: !L: event not found grep "Ui\.(?!(Line))" * nothing

5
Grep สำหรับสตริงตามตัวอักษร
ฉันใช้เครื่องมือประเภท grep เพื่อค้นหาสตริงตามตัวอักษรล้วนๆ ฉันกำลังมองหาการเกิดขึ้นของบรรทัดของไฟล์บันทึกซึ่งเป็นส่วนหนึ่งของบรรทัดในไฟล์บันทึกแยก ค้นหาข้อความที่สามารถมีทุกประเภทของตัวอักษรพิเศษ regex []().*^$-\เช่น มียูทิลิตี้การค้นหา Unix ที่ไม่ใช้ regex แต่เพียงแค่ค้นหาการเกิดขึ้นจริงของสตริงหรือไม่?
103 unix  grep 

7
ฉันจะใช้ตัวเลือก grep --include สำหรับไฟล์หลายประเภทได้อย่างไร
เมื่อฉันต้องการ grep ไฟล์ html ทั้งหมดในบางไดเร็กทอรีฉันทำสิ่งต่อไปนี้ grep --include="*.html" pattern -R /some/path ซึ่งทำงานได้ดี ปัญหาคือจะ grep ไฟล์ html, htm, php ทั้งหมดในบางไดเร็กทอรีได้อย่างไร? จากสิ่งนี้Use grep --exclude / - include syntax to not grep through some filesดูเหมือนว่าฉันสามารถทำสิ่งต่อไปนี้ได้ grep --include="*.{html,php,htm}" pattern -R /some/path แต่น่าเศร้าที่มันไม่ได้ผลสำหรับฉัน FYI เวอร์ชัน grep ของฉันคือ 2.5.1
100 shell  grep 

10
ฉันจะ grep ไฟล์ที่ซ่อนอยู่ได้อย่างไร
ฉันกำลังค้นหาผ่านที่เก็บ Git และต้องการรวม.gitโฟลเดอร์ grep ไม่รวมโฟลเดอร์นี้ถ้าฉันเรียกใช้ grep -r search * คำสั่ง grep เพื่อรวมโฟลเดอร์นี้คืออะไร?

6
ใช้ sed และ grep / egrep เพื่อค้นหาและแทนที่
ฉันใช้egrep -Rตามด้วยนิพจน์ทั่วไปที่มีประมาณ 10 สหภาพแรงงานเช่น: .jpg | .png | .gifฯลฯ สิ่งนี้ใช้ได้ดีตอนนี้ฉันต้องการแทนที่สตริงทั้งหมดที่พบด้วย.bmp ฉันกำลังคิดบางอย่างเช่น egrep -lR "\.jpg|\.png|\.gif" . | sed "s/some_expression/.jpg/" file_it_came_form ดังนั้นปัญหาที่นี่คือฉันจะทำนิพจน์ทั่วไปของสหภาพที่คล้ายกันได้sedอย่างไรและฉันจะบอกให้บันทึกการเปลี่ยนแปลงในไฟล์ที่ได้รับอินพุตได้อย่างไร
97 regex  sed  grep 

5
grepping โดยใช้“ |” ตัวดำเนินการทางเลือก
ต่อไปนี้เป็นตัวอย่างไฟล์ขนาดใหญ่ชื่อ AT5G60410.gff: Chr5 TAIR10 gene 24294890 24301147 . + . ID=AT5G60410;Note=protein_coding_gene;Name=AT5G60410 Chr5 TAIR10 mRNA 24294890 24301147 . + . ID=AT5G60410.1;Parent=AT5G60410;Name=AT5G60410.1;Index=1 Chr5 TAIR10 protein 24295226 24300671 . + . ID=AT5G60410.1-Protein;Name=AT5G60410.1;Derives_from=AT5G60410.1 Chr5 TAIR10 exon 24294890 24295035 . + . Parent=AT5G60410.1 Chr5 TAIR10 five_prime_UTR 24294890 24295035 . + . Parent=AT5G60410.1 Chr5 TAIR10 exon …
96 regex  linux  grep 

6
Grep ไม่ใช่นิพจน์ทั่วไป
$someVarฉันจำเป็นต้องค้นหาตัวแปร PHP อย่างไรก็ตาม Grep คิดว่าฉันพยายามเรียกใช้ regex และบ่นว่า: $ grep -ir "Something Here" * | grep $someVar Usage: grep [OPTION]... PATTERN [FILE]... Try `grep --help' for more information. $ grep -ir "Something Here" * | grep "$someVar" <<Here it returns all rows with "someVar", not only those with "$someVar">> ฉันไม่เห็นตัวเลือกในการบอก grep …
96 linux  grep 

6
grep สำหรับอักขระพิเศษใน Unix
ฉันมีไฟล์บันทึก (application.log) ซึ่งอาจมีสตริงอักขระปกติและอักขระพิเศษต่อไปนี้ในหลายบรรทัด: *^%Q&$*&^@$&*!^@$*&^&^*&^& ฉันต้องการค้นหาหมายเลขบรรทัดที่มีสตริงอักขระพิเศษนี้ grep '*^%Q&$*&^@$&*!^@$*&^&^*&^&' application.log คำสั่งดังกล่าวไม่ส่งคืนผลลัพธ์ใด ๆ อะไรคือไวยากรณ์ที่ถูกต้องในการรับหมายเลขบรรทัด?

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