Ich benutze oft grep, um Dateien mit einem bestimmten Eintrag wie dem folgenden zu finden:
grep -R 'MyClassName'
Das Gute ist, dass es die Dateien und ihren Inhalt zurückgibt und die gefundene Zeichenfolge rot markiert. Das Schlimme ist, dass ich auch riesige Dateien habe, in denen der gesamte Text in einer großen Zeile geschrieben ist. Jetzt gibt grep zu viel aus, wenn Text in diesen großen Dateien gefunden wird. Gibt es eine Möglichkeit, die Ausgabe auf beispielsweise 5 Wörter links und rechts zu beschränken? Oder beschränken Sie die Ausgabe auf 30 Buchstaben links und rechts?
cut
, da es nur nach Trennzeichen oder nach Anzahl der Zeichen aufgeteilt wird. Wenn ich eine Linie MyClassName
damit finde , kann sie sich jedoch irgendwo in der Linie befinden und nicht immer an derselben Position. Darüber hinaus kann es vorne und hinten zu einer Variation von Zeichen kommen, wodurch die Möglichkeit einer Aufteilung nach Trennzeichen aufgehoben wird.
MyClassName
gefunden wurde, möchte ich als Ergebnis den Dateinamen und die x Zeichen links und rechts erhalten. x ist eine beliebige Zahl, die ich angegeben habe, zum Beispiel 30. Der Rest des Dateiinhalts wird ignoriert. Dies dient dazu, einen Kontext zu den übereinstimmenden Dateien zu erhalten und die Überlastung zu begrenzen.
cut
wenn drei Dateien mit der folgenden Eingabe vorhanden sind: oiadfaosuoianavMyClassNameionaernaldfajd
und /(/&%%§%/(§(/MyClassName&((/$/$/(§/$&
und public class MyClassName { public static void main(String[] args) { } }
?
cut