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

สำหรับคำถามเกี่ยวกับ grep เครื่องมือบรรทัดคำสั่งสำหรับค้นหารูปแบบข้อความในไฟล์ ใช้แท็กนี้สำหรับคำถามเกี่ยวกับ grep หรือคำถามเกี่ยวกับปัญหาที่เกิดขึ้นจากการใช้เครื่องมือบรรทัดคำสั่ง grep

5
จะแสดงบรรทัด 2-4 หลังจากผลลัพธ์ grep แต่ละรายการอย่างไร
ฉันกำลังแยกวิเคราะห์ไฟล์เมลที่เก็บเซิร์ฟเวอร์รายงานเพื่อส่งอีเมลไม่สำเร็จ ฉันต้องการแยกที่อยู่อีเมลที่ไม่ดีออกเพื่อให้ฉันลบออกจากระบบ ล็อกไฟล์มีลักษณะดังนี้: ...some content... The mail system <slavicatomic118@hotmail.com>: host mx1.hotmail.com[65.54.188.94] said: 550 Requested action not taken: mailbox unavailable (in reply to RCPT TO command) ...some content... The mail system <oki88@optimumpro.net>: host viking.optimumpro.net[79.101.51.82] said: 550 Unknown user (in reply to RCPT TO command) ...some content... The mail system <sigirna_luka@yahoo.com>: host …
40 grep 

5
ฉันจะค้นหาไฟล์ทั้งหมดที่ไม่มีสตริงข้อความได้อย่างไร?
ฉันสามารถใช้คำสั่งรวบรัดอะไรเพื่อค้นหาไฟล์ทั้งหมดที่ไม่มีสตริงข้อความ? ฉันลองสิ่งนี้ (โดยใช้ -v เพื่อสลับพารามิเตอร์ของ grep) โดยไม่มีโชค: find . -exec grep -v -l shared.php {} \; มีคนกล่าวว่าสิ่งนี้จะได้ผล: find . ! -exec grep -l shared.php {} \; แต่ดูเหมือนจะไม่ได้ผลสำหรับฉัน หน้านี้มีตัวอย่างนี้: find ./logs -size +1c > t._tmp while read filename do grep -q "Process Complete" $filename if [ $? -ne 0 ] ; …
40 grep  find  recursive 

3
จะเริ่ม grep แบบหลายเธรดในเทอร์มินัลได้อย่างไร?
ฉันมีโฟลเดอร์ที่มี 250 ไฟล์ไฟล์ละ 2 GB ฉันต้องการค้นหาสตริง / รูปแบบในไฟล์เหล่านั้นและส่งออกผลลัพธ์ในoutputไฟล์ ฉันรู้ว่าฉันสามารถเรียกใช้คำสั่งต่อไปนี้ แต่ช้าเกินไป !! grep mypattern * > output ฉันต้องการเพิ่มความเร็ว การเป็นโปรแกรมเมอร์ใน Java ฉันรู้ว่าสามารถใช้มัลติเธรดเพื่อเร่งกระบวนการได้ ฉันติดอยู่กับวิธีการเริ่มต้นgrepใน "โหมดมัลติเธรด" และเขียนผลลัพธ์ลงในoutputไฟล์เดียว
38 grep  parallelism 

4
grep จากจุดสิ้นสุดของไฟล์ไปยังจุดเริ่มต้น
ฉันมีไฟล์ที่มีเส้นประมาณ 30.000.000 บรรทัด (การบัญชี Radius) และฉันต้องการค้นหาคู่สุดท้ายของรูปแบบที่กำหนด คำสั่ง: tac accounting.log | grep $pattern ให้สิ่งที่ฉันต้องการ แต่ช้าเกินไปเพราะระบบปฏิบัติการจะต้องอ่านไฟล์ทั้งหมดก่อนแล้วจึงส่งไปที่ไพพ์ ดังนั้นฉันต้องการสิ่งที่รวดเร็วที่สามารถอ่านไฟล์จากบรรทัดสุดท้ายถึงบรรทัดแรก

4
ฉันจะ grep สำหรับสิ่งนี้หรือว่า (2 สิ่ง) ในไฟล์ได้อย่างไร
ฉันมีไฟล์ที่มี "แล้ว" และ "มี" ของ ฉันสามารถ $ grep "then " x.x x and then some x and then some x and then some x and then some และฉันสามารถ $ grep "there " x.x If there is no blob none some will be created ฉันจะค้นหาทั้งสองอย่างในการดำเนินการเดียวได้อย่างไร ฉันเหนื่อย $ grep (then|there) x.x -bash: …

4
มีไฟล์กำหนดค่า 'rc' สำหรับ grep / egrep หรือไม่ (~ / .egreprc?)
ฉันมักจะทำ grep เมื่อทำการพัฒนาและมีส่วนขยายบางอย่างที่ฉันไม่ต้องการค้นหา (เช่น * .pyc) เป็นไปได้ไหมที่จะสร้าง ~ / .egreprc หรืออะไรทำนองนั้นและทำให้การกรองบางอย่างไม่แสดงผลไฟล์ pyc เสมอ เป็นไปได้หรือฉันจะต้องสร้างนามแฝงสำหรับใช้ grep ในลักษณะนี้และเรียกนามแฝงแทน grep หรือไม่

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

3
grep ใช้แคชเพื่อเพิ่มความเร็วในการค้นหาหรือไม่?
ฉันได้สังเกตเห็นว่าการรันที่ตามมาของgrepเคียวรีเดียวกัน (และเคียวรีที่แตกต่างกัน แต่ในไฟล์เดียวกัน) นั้นเร็วกว่าการรันครั้งแรกมาก สิ่งนี้แสดงให้เห็นว่า grep ใช้การแคชแบบโครงสร้างที่ใช้สำหรับการค้นหา แต่ฉันไม่สามารถหาข้อมูลอ้างอิงบนอินเทอร์เน็ตได้ กลไกใดที่ช่วยgrepให้ได้ผลลัพธ์เร็วขึ้นในการค้นหาครั้งต่อไป
35 linux  grep  cache 

4
ความแตกต่างระหว่างตัวเลือก grep -e และ grep -E คืออะไร?
ฉันพยายามที่จะเข้าใจความแตกต่างระหว่างและgrep -e grep -Eตอนนี้จากที่grep manpageฉันได้รับ: -E, --extended-regexp ตีความรูปแบบเป็นการแสดงออกปกติเพิ่มเติม (ดูด้านล่าง) รูปแบบ e - regexp = รูปแบบ ใช้รูปแบบเป็นลวดลาย มีประโยชน์ในการปกป้องรูปแบบที่ขึ้นต้นด้วย - คำอธิบายข้างต้นไม่สมเหตุสมผลสำหรับฉัน ดังนั้นใครสามารถอธิบายให้ฉันใช้examplesสิ่งที่แตกต่างระหว่างสองและเมื่อใช้ตัวเลือกใด PS: เวอร์ชัน: grep (GNU grep) 2.10
34 grep 

3
ท่อจาก grep ไปยัง awk ไม่ทำงาน
ฉันพยายามที่จะบันทึกไฟล์grepอย่างต่อเนื่องtailและได้nคำจากบรรทัด ไฟล์ตัวอย่าง: $ cat > test.txt <<EOL Beam goes blah John goes hey Beam goes what? John goes forget it Beam goes okay Beam goes bye EOL ^C ตอนนี้ถ้าฉันทำtail: $ tail -f test.txt Beam goes blah John goes hey Beam goes what? John goes forget it Beam goes okay Beam …
34 bash  grep  rhel  awk  tail 

6
ฉันจะไพพ์ ls เป็น grep ได้อย่างไรและลบไฟล์ที่กรองโดย grep?
ฉันต้องการลบแพคเกจบางอย่างในไฟล์บ้านของฉัน แต่ชื่อไฟล์ยาวเกินไป ( google-chrome-stable_current_i386.deb) ดังนั้นฉันจึงตัดสินใจใช้คำสั่งls|grep chrome|rmเพื่อไพพ์ไฟล์เพื่อ grep เพื่อกรองไฟล์ chrome แล้วลบออก มันใช้งานไม่ได้ดังนั้นฉันอยากจะดูว่าฉันสามารถทำสิ่งนี้ได้อย่างไร
33 grep  pipe  ls  rm 


4
จำกัด บริบทของ grep ไม่เกินอักขระ N บรรทัด
ฉันต้อง grep ผ่านไฟล์ JSON บางไฟล์ที่ความยาวบรรทัดเกินสองสามพันตัวอักษร ฉันจะ จำกัด grep เพื่อแสดงบริบทได้สูงสุด N ตัวอักษรไปทางซ้ายและขวาของการจับคู่อย่างไร เครื่องมืออื่นที่ไม่ใช่ grep ก็ใช้ได้เช่นกันตราบใดที่มันมีอยู่ในแพ็คเกจ Linux ทั่วไป นี่จะเป็นตัวอย่างเอาต์พุตสำหรับสวิตช์ grep จินตภาพ inary : $ grep -r foo * hello.txt: Once upon a time a big foo came out of the woods. $ grep -Ф 10 -r foo * hello.txt: ime a big …
31 grep  search  json 

9
ฉันจะลบบรรทัดแรกและบรรทัดสุดท้ายของไฟล์โดยใช้คำสั่งเชลล์ได้อย่างไร
ฉันมีไฟล์ชื่อElement_queryที่มีผลลัพธ์ของแบบสอบถาม: SQL> select count (*) from element; [Output of the query which I want to keep in my file] SQL> spool off; ฉันต้องการลบบรรทัดที่ 1 และบรรทัดสุดท้ายโดยใช้คำสั่งเชลล์
31 shell  sed  awk  grep  pipe 

2
grep และหนีเครื่องหมายดอลลาร์
$Id$ฉันต้องการที่จะทราบว่ามีไฟล์สตริง grep \$Id\$ my_dir/mylist_of_files ส่งกลับค่าที่เกิดขึ้น 0 ฉันค้นพบว่าฉันต้องใช้ grep \$Id$ my_dir/mylist_of_files จากนั้นฉันจะเห็นว่า$Idมีสีในเอาต์พุตนั่นคือมันถูกจับคู่ ฉันจะจับคู่ที่สองได้อย่างไร$และทำไมไม่\$Id\$ทำงาน ไม่สำคัญว่าตัวที่สอง$จะเป็นตัวละครตัวสุดท้ายหรือไม่ ฉันใช้grep2.9 ก่อนโพสต์คำถามของฉันฉันใช้ google ... ฉันพบคำตอบ หากต้องการค้นหา $ (เครื่องหมายดอลลาร์) ในไฟล์ชื่อ test2 ให้ป้อน: grep \\ $ test2 จำเป็นต้องใช้อักขระ \\ (double backslash) เพื่อบังคับให้เชลล์ส่ง a \ $ (เครื่องหมายแบ็กสแลชเดี่ยว, เครื่องหมายดอลลาร์) ไปยังคำสั่ง grep อักขระ \ (แบ็กสแลชเดี่ยว) บอกให้คำสั่ง grep ปฏิบัติต่ออักขระต่อไปนี้ (ในตัวอย่างนี้ $) เป็นตัวอักษรมากกว่าอักขระนิพจน์ ใช้คำสั่ง …

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