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.