ถึง grep 20 ตัวละครหลังและก่อนการแข่งขัน


15

ฉันมีปัญหาที่ฉันได้รับข้อมูลมากเกินไปหลังจากการแข่งขัน

grep -RnisI --color=auto "pseudomonas" *

ฉันต้องการได้แค่ 20 ตัวอักษรหรือ 10 คำหลังและก่อนการแข่งขัน

เครื่องมือที่เหมาะสมในการทำสิ่งนี้คืออะไร?


1
ชุดตัวเลือกของคุณค่อนข้างแปลกเมื่อบ่นเกี่ยวกับข้อมูลมากเกินไป คุณต้องการหนึ่งบรรทัดหลังและก่อนที่การแข่งขันของคุณจะปรากฏ ( -A1และ-B1ตอบ) แต่มันมากเกินไปหรือไม่ คุณต้องการให้ผลลัพธ์ของคุณถูกครอบตัดตรงไหน
Andreas Wiese

1
คุณสามารถให้ตัวอย่างอินพุตและเอาต์พุตที่คุณต้องการได้หรือไม่?
Ramesh

ฉันเปลี่ยนคำสั่งฉันทดสอบใน Ubuntu 13.10 แจ้งให้เราทราบหากมันเหมาะกับคุณ ฉันมีตัวเลือก grep และตัวเลือก egrep
Eric

คำตอบ:


24
cat file.txt | grep -o -P '.{0,20}string.{0,20}'

สิ่งนี้ควรทำเพื่อคุณ

ปรับปรุง:

หากคุณไม่ต้องการ cat คุณสามารถใช้ grep กับไฟล์เป็นพารามิเตอร์:

grep -o -P '.{0,20}pseudomonas.{0,20}' FileName.html

นอกจากนี้ The -P ใช้ Perl Regex ซึ่ง man pages กล่าวว่าเป็นการทดลองถ้าคุณต้องการหลีกเลี่ยงการตั้งค่าสถานะนั้นคุณสามารถใช้ egrep แทน:

grep -Eo '.{0,20}yourstring.{0,20}' yourtestfile.txt

เป็นไฟล์ทดสอบที่น่าเกลียดที่คุณมีอยู่)
Ouki

ส่วนที่เหลือของไฟล์นั้นมีประโยชน์จริง ๆ ซึ่งเป็นส่วนหนึ่งของความคิดเห็นแบบหลายบรรทัดตรงกลางของ Scheme ที่ต้องแยกออกโดยไม่แยกตัวแยกวิเคราะห์ของเรามันเป็นเพียงบรรทัดที่ดีที่จะลองใช้
Eric

เนื่องจากเป็นหนึ่งในไฟล์ของฉันมันตั้งเป็น 755 แต่ฉันเห็นได้ว่า cat อาจไม่เหมาะสำหรับไฟล์ HTML คุณสามารถลองส่งชื่อไฟล์ไปยัง grep เป็นพารามิเตอร์ดูการแก้ไขของฉัน
Eric

ฉันหมายถึง 777 ไฟล์ที่คุณมี 777 สำเนาของไฟล์ที่แตกต่างกันไม่ใช่สิ่งที่ chown ฉันเรียกใช้ $$$ egrep -o '. {0,20} pseudomonas. {0,20}' * $$$ คำสั่งยังคงอยู่ที่นั่นและไม่ทำอะไรเลย ดูเหมือนว่าจะใช้งานได้อีกครั้ง $$$ egrep -ori '. {0,20} pseudomonas. {0,20}' * $$$ เช่นเดียวกันกับการเรียกซ้ำและเป็นตัวพิมพ์เล็ก อย่างไรก็ตามมันช้ามาก ฉันคิดว่ามันไม่ควรช้าขนาดนั้น Grep เร็วขึ้นมาก
LéoLéopold Hertz 준영

หาก catting ใช้งานไม่ได้คุณสามารถใส่มันลงในไฟล์ได้ตลอดเวลาโดยเพิ่ม> results.txtที่ส่วนท้ายของคำสั่งของคุณ แต่มันจะไม่บอกคุณว่าไฟล์ไหนที่คุณพบมัน
Eric

4
pcregrep -MnirIso '(?s).{0,20}pseudomonas.{0,20}' . |
  grep --color -e '^' -e pseudomonas

pseudomonasถือว่าการแข่งขันและบริบทของพวกเขาไม่ได้มีการทับซ้อนกันและชื่อไฟล์ที่ไม่ได้มี

นอกจากนี้โปรดทราบว่าหมายเลขบรรทัดที่รายงานคือหมายเลขเริ่มต้นของบริบท

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