मैच के पहले और बाद में 20 वर्णों को टटोलना


15

मुझे समस्या है कि मुझे मैच के बाद बहुत अधिक जानकारी मिलती है

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

मैं मैच के पहले और बाद में केवल 20 अक्षर या 10 शब्द प्राप्त करना चाहता हूं।

ऐसा काम करने के लिए सही उपकरण क्या है?


1
बहुत अधिक जानकारी के बारे में शिकायत करते समय आपके विकल्पों का सेट थोड़ा अजीब होता है। आप अपने मैच ( और सम्मान) के प्रदर्शन से पहले और बाद में एक पंक्ति चाहते हैं , लेकिन यह बहुत अधिक है? वास्तव में आप अपना आउटपुट कहाँ चाहते हैं? -A1-B1
एंड्रियास विसे

1
क्या आप एक उदाहरण इनपुट और आउटपुट दे सकते हैं जिसकी आप अपेक्षा कर रहे हैं?
रमेश

मैंने कमांड को बदल दिया है, मैं Ubuntu 13.10 में परीक्षण करता हूं, मुझे बताएं कि क्या यह आपके लिए काम करता है। मेरे पास एक grep विकल्प और एक egrep विकल्प है
Eric

जवाबों:


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

यह आपके लिए करना चाहिए

अपडेट करें:

यदि आप बिल्ली नहीं चाहते हैं, तो आप फ़ाइल के साथ grep को एक पैरामीटर के रूप में उपयोग कर सकते हैं:

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

इसके अलावा, The-Per Per Regex का उपयोग करता है, जो मैन पेज कहता है कि प्रायोगिक है, यदि आप उस ध्वज से बचना चाहते हैं, तो आप इसके बजाय egrep का उपयोग कर सकते हैं:

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

आपके पास एक बदसूरत परीक्षण फ़ाइल क्या है;)
Ouki

फ़ाइल का बाकी हिस्सा वास्तव में उपयोगी है, यह एक योजना के बीच में एक बहु-पंक्ति टिप्पणी का हिस्सा है जिसे हमारे पार्सर को तोड़ने के बिना बाहर करना पड़ा था, यह इसके साथ प्रयास करने के लिए सिर्फ एक अच्छी रेखा थी।
एरिक

चूंकि मेरी एक फ़ाइल, इसका सेट 755 है, लेकिन मैं देख सकता हूं कि HTML फ़ाइल के लिए बिल्ली कैसे आदर्श नहीं हो सकती है, आप पैरामीटर के रूप में grep करने के लिए फ़ाइल नाम को पारित करने का प्रयास कर सकते हैं, मेरा संपादन देखें।
एरिक

मेरा मतलब 777 फाइलों से है, जो आपके पास अलग-अलग फाइलों की 777 प्रतियां हैं, न कि चॉइस चीज। मैं $$$ egrep -o 'चलाता हूं। {0,20} स्यूडोमोनास। {0,20}' * * $$$। आदेश वहाँ अनंत रहता है और कुछ भी नहीं करता है। इसके बाद फिर से $ $ $ काम करने लगता है। अरेप्रे-नोरी। {0,20} स्यूडोमोनास। {0,20} '* $ $ $। पुनरावृत्ति और केस-इनसेटिव के साथ भी ऐसा ही है। हालांकि, यह बहुत धीमा है। मुझे लगता है कि यह धीमा नहीं होना चाहिए। ग्रीप काफी तेज था।
लेओ लेपोल्ड हर्ट्ज़ '

अगर कैटिंग काम नहीं करता है, तो आप हमेशा इसे केवल > results.txtअपने कमांड के अंत में जोड़कर एक फ़ाइल में डाल सकते हैं , लेकिन यह आपको यह नहीं बताएगा कि आपने इसे किस फाइल में पाया है।
एरिक

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

मैच मानता है और उनका संदर्भ ओवरलैप नहीं होता है और इसमें फ़ाइल नाम नहीं होते हैं pseudomonas

यह भी ध्यान दें कि रिपोर्ट की गई संख्याएँ संदर्भ की शुरुआत की हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.