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

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


2
ฉันจะเก็บเน้นการจับคู่ของ grep ได้อย่างไรเมื่อทำการ piping ไปที่ grep
หากฉันเรียกใช้grep foo bar.txtgrep จะเน้นการ "foo" ในbar.txtแต่ละครั้ง แต่บางครั้งฉันต้องการใช้findเพื่อตรวจสอบว่าไฟล์ grep ค้นหา ดังนั้นฉันจะทำสิ่งนี้: find . -iname "*.abc" | xargs grep foo หรือสิ่งนี้: find . -iname "*.abc" -exec grep foo {} \; ในทั้งสองกรณี grep ค้นหาเหตุการณ์ "foo" ในไฟล์ที่ระบุอย่างถูกต้อง แต่เอาต์พุตไม่มีการเน้นสีใด ๆ ฉันจะใช้findเพื่อเลือกไฟล์สำหรับ grep เพื่อค้นหาโดยไม่ไฮไลต์ได้อย่างไร ฉันใช้ Gnome Terminal 3.4.1.1 บน Ubuntu 12.04 โดยมี bash เป็น shell ของฉัน

2
กรอง / grep เอาท์พุทบางคอลัมน์เท่านั้นหรือไม่?
ฉันจะกรองเอาท์พุทบางคอลัมน์ได้อย่างไร ฉันต้องการสิ่งนี้: tail -f logs/access_log | grep -v "200" --only-in-column=1 ดังนั้นฉันต้องการเห็นเฉพาะบรรทัดที่ไม่มีสตริง '200' ในคอลัมน์แรก
4 linux  grep 

2
มีอะไรเร็วไปกว่า grep? [ปิด]
ฉันกำลังมองหาเครื่องมือที่จะเร็วกว่า grep บางที grep แบบมัลติเธรดหรือสิ่งที่คล้ายกัน ... ฉันได้ดูที่ indexers หลายอัน แต่ฉันไม่ได้ขายที่ฉันต้องการ index ... ฉันมีไฟล์ข้อความประมาณ 100 ล้านไฟล์ซึ่งฉันต้อง grep สำหรับการจับคู่สตริงที่แน่นอนเมื่อค้นหาการจับคู่สตริงฉันต้องการชื่อไฟล์ที่พบการจับคู่ ie: grep -r 'exact match' > filepaths.log มันมีข้อมูลประมาณ 4TB และฉันเริ่มการค้นหาครั้งแรกเมื่อ 6 วันก่อนและ grep ยังคงทำงานอยู่ ฉันมีการค้นหาอีกหลายสิบครั้งและฉันไม่สามารถรอ 2 เดือนเพื่อเรียกชื่อไฟล์เหล่านี้ทั้งหมด =] ฉันได้ตรวจสอบสิ่งต่อไปนี้แล้ว แต่ฉันไม่คิดว่าฉันต้องการระฆังและนกหวีดทั้งหมดที่ตัวสร้างดัชนีเหล่านี้มาพร้อมกับฉันแค่ต้องการชื่อไฟล์ที่มีการแข่งขันเกิดขึ้น ... dtSearch เทอร์เรี Lucene Xapian หดตัว บุคคลลึกลับ และหลังจากใช้เวลาอ่านเกี่ยวกับเครื่องยนต์เหล่านั้นหลายชั่วโมงหัวของฉันก็หมุนและฉันก็หวังว่าฉันจะมี grep ฮ่า ๆ ๆ ที่มีหลายเธรดความคิดใด …

2
จัดเรียงไฟล์ด้วย grep
ฉันมีไฟล์เอาต์พุตหลายร้อยไฟล์ซึ่งบางไฟล์มีข้อความแสดงข้อผิดพลาด ให้บอกว่าฉันต้องการใส่ไฟล์ทั้งหมดที่มีสตริง "ERROR_1" โดยอัตโนมัติใน "subfolder_1" และที่เหลือใน "subfolder_2" อันที่สอง สิ่งนี้น่าจะเป็นไปได้โดยการวาง grep สิ่งที่จะเป็นไวยากรณ์ที่มีประโยชน์?
4 bash  grep  sorting  pipe 

3
grep วนซ้ำเพื่อค้นหาคำในไฟล์เฉพาะ
ฉันรู้เกี่ยวกับ grep -rin 'text' /path/to/direcotry แต่ฉันไม่ต้องการค้นหาไฟล์ทั้งหมด ฉันแค่ต้องตรวจสอบการเกิดขึ้นของ 'ข้อความ' ในไฟล์ทั้งหมดที่ชื่อ wscript จะทำอย่างไร?
3 search  grep 

3
คำสั่ง unix เพื่อตรวจสอบช่วงของคำในข้อความ
คำสั่ง unix ใดที่ฉันสามารถใช้เพื่อกำหนดระยะห่างบรรทัดที่คำปรากฏในข้อความ "span" เท่ากับจำนวนบรรทัดของอินสแตนซ์สุดท้ายของคำลบด้วยหมายเลขบรรทัดของอินสแตนซ์แรกของคำ 1| unix is on two lines 2| once above, and once below 3| unix ในตัวอย่างข้างต้น "span" ของ 'unix' จะเป็น 2 (3-1) จนถึงตอนนี้ฉันพยายามใช้ grep -n แต่ฉันไม่คิดว่า grep มีพลังมากพอ บางทีการใช้งาน sed หรือ awk บ้าง? ขอบคุณ!
3 unix  regex  grep  sed  awk 

2
จะพิมพ์อักขระตัวแรกในคอลัมน์ที่สองได้อย่างไร
ใช้ egrep วิธีการที่ฉันสามารถพิมพ์ทุกบรรทัดที่ชื่อสุดท้ายเริ่มต้นด้วยKหรือk? Jennifer Cowan:548-834-2348:583 Laurel Ave., Kingsville, TX 83745:10/1/35:58900 Lesley Kirstin:408-456-1234:4 Harvard Square, Boston, MA 02133:4/22/62:52600 Jennifer Cowan:548-834-2348:583 Laurel Ave., kingsville, TX 83745:10/1/35:58900 Lesley kirstin:408-456-1234:4 Harvard Square, Boston, MA 02133:4/22/62:52600 William Kopf:846-836-2837:6937 Ware Road, Milton, PA 93756:9/21/46:43500 Arthur Putie:923-835-8745:23 Wimp Lane, Kensington, DL 38758:8/31/69:126000

1
ag (the_silver_searcher) ไม่ค้นหาไฟล์ทั้งหมด - มีขนาดอินพุตสูงสุดโดยนัยหรือไม่?
ฉันมีไฟล์ข้อความขนาดใหญ่มาก (หลายกิกะไบต์) ซึ่งฉันต้องการค้นหาสตริงบางอย่าง เมื่อใช้grepฉันได้รับมากกว่า 11,000 แมตช์ของสตริง แต่มีag1,500 ประมาณ เอาต์พุตของทั้งสองคำสั่งนั้นเหมือนกันจนถึงจุดที่agหยุด ฉันตระหนักถึง-mตัวเลือกในagการกำหนดจำนวนการจับคู่สูงสุด แต่ค่าเริ่มต้นคือ 10,000 และดังนั้นจึงไม่ใช่ปัญหา เพื่อแสดงสิ่งนี้นี่คือตัวอย่างของสิ่งที่เกิดขึ้น: $ grep -i 'string' hugefile.txt | wc -l 11000 $ ag -i 'string' hugefile.txt | wc -l 1500 เอาต์พุตของทั้งสองคำสั่งนั้นเหมือนกับจำนวนที่ตรงกันเท่ากัน: $ grep -m 1500 -i 'string' hugefile.txt > grep_output.txt $ ag --no-numbers -i 'string' hugefile.txt > ag_output.txt …
3 macos  unix  grep 

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

6
ภายใต้ * ระวังฉันจะค้นหาสตริงภายในไฟล์ภายในไดเรกทอรีได้อย่างไร
ฉันใช้ Ubuntu Linux และฉันใช้ bash จากกับ terminal emulator ทุกวันสำหรับงานหลายอย่าง ฉันต้องการทราบวิธีการค้นหาสตริงหรือสตริงย่อยภายในไฟล์ที่อยู่ในไดเรกทอรีเฉพาะ หากฉันรู้ว่าไฟล์ที่มีซับสตริงเป้าหมายของฉันฉันจะ cat ไฟล์และไพพ์ผ่าน grep ดังนั้น: cat file | grep mysubstring แต่ในกรณีนี้สตริงย่อยที่น่ารำคาญอาจอยู่ที่ใดก็ได้ภายในไดเรกทอรีที่รู้จัก ฉันจะตามล่าสตริงย่อยได้อย่างไร
2 linux  grep 

1
ฉันจะเรียกใช้คำสั่งในแต่ละไฟล์ภายในไดเรกทอรีที่ตรงกับรูปแบบได้อย่างไร
ฉันพยายามเรียกใช้คำสั่งในทุกไฟล์ภายในไดเรกทอรี (วนซ้ำ) ที่ตรงกับรูปแบบ ฉันต้องการชื่อไฟล์ของแต่ละรายการที่ตรงกับคำสั่งอย่างไรก็ตาม นี่คือสิ่งที่ฉันได้: find . -name '*.jar' นั่นให้ไฟล์ทั้งหมดที่ฉันสนใจตอนนี้ฉันต้องเรียกใช้คำสั่งต่อไปนี้ในทุกไฟล์เหล่านั้น jarsigner -keystore ***** -storepass ****** $FILENAMEHERE ฉันจะอ้างอิงแต่ละไอเท็มในเอาต์พุตของ find สำหรับคำสั่งได้อย่างไร?

3
วิธีการส่งออก grep เป็น scp?
ฉันมีไฟล์โดยที่แต่ละบรรทัดเป็นชื่อไฟล์ เนื้อหาของไฟล์: file1 file2 file3 ... ฉันเรียกใช้grepคำสั่งเพื่อรับชุดย่อยของรายการชื่อไฟล์ ฉันจะป้อนข้อมูลเอาต์พุตของgrepคำสั่งลงในได้scpอย่างไร? ฉันได้เล่นกับxargsและ $()ไม่ประสบความสำเร็จมาก ...
2 unix  grep  scp  pipe  xargs 

3
Linux - สถานะบริการหลายสถานะด้วยคำสั่งเดียว
ฉันกำลังพยายามดึงรายการสถานะบริการหลายสถานะใน Unix ผมใช้serviceคำสั่ง: หน้าคน สถานะทั้งหมดเริ่มต้นด้วยtransmission-daemonสตริงตัวอย่างเช่น ผมจำเป็นต้องมีความสามารถในการแสดงรายการสถานะหลายบริการมีคำสั่งเดียว นี่คือสิ่งที่ฉันกำลังพยายาม (และล้มเหลว) ด้วย: grepนี่ฉันพยายามที่จะคว้ารายการสถานะโดยใช้ service $(ls /etc/init.d | grep "transmission-daemon") status ที่นี่ฉันพยายามที่จะแสดงสถานะทั้งหมดแล้วgrepสำหรับพวกเขา service --status-all | grep "transmission-daemon" สิ่งนี้ก่อให้เกิดสิ่งต่อไปนี้ซึ่งไม่ได้ช่วยอะไรมาก: ฉันจะบรรลุสิ่งที่ฉันต้องการอย่างมีประสิทธิภาพด้วยคำสั่งเดียวได้อย่างไรเพื่อที่ฉันจะสามารถทำการไพพ์ต่อไปawkเพื่อปรับแต่งเพิ่มเติมได้? เอาต์พุตตัวอย่างที่ต้องการ: transmission-daemon started transmission-daemon2 stopped transmission-daemon3 started
2 linux  grep 

1
grep เป็นกลุ่มสามารถทำให้เป็นกรณี ๆ ไปตามเงื่อนไขหรือไม่?
เมื่อฉันทำการค้นหาในเอกสารด้วย/หรือทำการค้นหาด้วย?ตัวพิมพ์เล็กและตัวพิมพ์ใหญ่เมื่อตัวอักษรพิมพ์ใหญ่ปรากฏในรูปแบบการค้นหาเนื่องจากการรวมกันของignorecaseและsmartcaseการตั้งค่า มีวิธีเลียนแบบพฤติกรรมนี้ด้วย:grepคำสั่งโดยไม่จำเป็นต้องเพิ่มการ-iตั้งค่าด้วยตนเองทุกครั้งหรือไม่?
2 vim  grep 

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