Aby grepować 20 znaków po meczu i przed nim


15

Mam problem, dla którego po meczu otrzymuję zbyt wiele informacji

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

Chcę uzyskać tylko 20 znaków lub 10 słów po meczu i przed nim.

Jakie jest właściwe narzędzie do zrobienia czegoś takiego?


1
Twój zestaw opcji jest nieco dziwny, gdy narzekasz na zbyt wiele informacji. Chcesz jedną linię po i przed swoją mecz wyświetlany ( -A1i -B1wzgl.), Ale to jest zbyt dużo? Gdzie dokładnie chcesz przyciąć swoją produkcję?
Andreas Wiese

1
Czy możesz podać przykładowe dane wejściowe i wyjściowe, których oczekujesz?
Ramesh,

Zmieniłem polecenie, testuję w Ubuntu 13.10, daj mi znać, czy to działa dla ciebie. Mam opcję grep i opcję egrep
Eric

Odpowiedzi:


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

To powinno zrobić dla ciebie

Aktualizacja:

Jeśli nie chcesz cat, możesz po prostu użyć grep z plikiem jako parametrem:

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

Ponadto, -P używa Perl Regex, który według stron man jest eksperymentalny, jeśli chcesz uniknąć tej flagi, możesz zamiast tego użyć egrep:

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

Jaki masz brzydki plik testowy;)
Ouki

Reszta pliku jest naprawdę przydatna, to jest część wieloliniowego komentarza w środku schematu, który musiał zostać wykluczony bez zerwania naszego parsera, była to po prostu dobra linia do wypróbowania.
Eric

Ponieważ jest to jeden z moich plików, ustawiono go na 755, ale widzę, że cat może nie być idealny dla pliku HTML, możesz spróbować przekazać nazwę pliku do grep jako parametru, zobacz moją edycję.
Eric

Rozumiem przez 777 plików, że masz 777 kopii różnych plików, a nie chown. Uruchamiam $$$ egrep -o '. {0,20} pseudomonas. {0,20}' * $$$. Komenda pozostaje tam nieskończoność i nic nie robi. To znowu wydaje się działać $$$ egrep -ori '. {0,20} pseudomonas. {0,20}' * $$$. To samo dotyczy rekurencji i rozróżniania wielkości liter. Jest jednak bardzo wolny. Myślę, że nie powinno być tak wolno. Grep był znacznie szybszy.
Léo Léopold Hertz

jeśli catting nie działa, zawsze możesz po prostu umieścić go w pliku, dodając > results.txtdo końca polecenia, ale nie powie ci, w którym pliku go znalazłeś.
Eric

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

Zakłada, że ​​dopasowania i ich kontekst nie pokrywają się, a nazwy plików nie zawierają pseudomonas.

Zauważ również, że zgłaszane numery wierszy pochodzą z początku kontekstu.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.