Maçtan önce ve sonra 20 karakter grep


15

Maçtan sonra çok fazla bilgi alma problemim var

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

Maçtan önce ve sonra sadece 20 karakter veya 10 kelime almak istiyorum.

Böyle bir şeyi yapmak için doğru araç nedir?


1
Çok fazla bilgi hakkında şikayet ederken seçenek kümeniz biraz tuhaf. Tek bir hat istiyorum sonra ve önce eşleme görüntülenen ( -A1ve -B1resp.), Ama çok fazla değil mi? Çıktınızın tam olarak nerede kesilmesini istiyorsunuz?
Andreas Wiese

1
Beklediğiniz bir örnek girdi ve çıktı verebilir misiniz?
Ramesh

Komutu değiştirdim, Ubuntu 13.10'da test ediyorum, sizin için işe yarayıp yaramadığını bana bildirin. Bir grep seçeneğim ve bir egrep seçeneğim var
Eric

Yanıtlar:


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

Bu senin için yapmalı

Güncelleme:

Katılmak istemiyorsanız, grep'i dosyayla birlikte parametre olarak kullanabilirsiniz:

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

Ayrıca, -P, man sayfalarının deneysel olduğunu söylediği Perl Regex'i kullanır, bu bayrağı önlemek istiyorsanız egrep'i kullanabilirsiniz:

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

Ne çirkin bir test dosyanız var;)
Ouki

Dosyanın geri kalanı gerçekten yararlıdır, bu, Parser'ımızı kırmadan hariç tutulması gereken bir Şemanın ortasında bulunan çok satırlı bir yorumun bir parçasıdır, bunu denemek için sadece iyi bir satırdı.
Eric

Dosyalarımdan biri 755 olarak ayarlandığından, kedinin bir HTML dosyası için nasıl ideal olmadığını görebiliyorum, dosya adını grep'e parametre olarak geçirmeyi deneyebilirim, düzenlememe bakın.
Eric

Yani 777 dosya ile, farklı şeylerin 777 kopyasına sahipsiniz, chown şeyi değil. $$$ egrep -o 'çalıştırıyorum. {0,20} psödomonas. {0,20}' * $$$. Komut orada sonsuz kalır ve hiçbir şey yapmaz. Bu daha sonra yine işe yarayacaktır $$$ egrep -ori '. {0,20} pseudomonas. {0,20}' * $$$. Aynısı özyineleme ve büyük / küçük harf duyarlı olmayanlar için de geçerlidir. Ancak, çok yavaş. Bence o kadar yavaş olmamalı. Grep çok daha hızlıydı.
Léo Léopold Hertz 준영

catting işe yaramazsa, > results.txtkomutunuzun sonuna ekleyerek her zaman bir dosyaya koyabilirsiniz , ancak size hangi dosyayı bulduğunuzu söylemez.
Eric

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

Eşleşmelerin ve içeriklerinin çakışmadığını ve dosya adlarının içermediğini varsayar pseudomonas.

Ayrıca, bildirilen satır numaralarının bağlamın başındaki numaralar olduğunu unutmayın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.