Ich möchte in einem riesigen Datenbank-Dump suchen und ersetzen, und es tut nicht das, was meiner Meinung nach passieren sollte. Ich möchte nach meiner Zielzeichenfolge in der Datei suchen und dann die umgebenden 8 Zeichen oder so sehen (je nach Bedarf muss ich diese Zahl möglicherweise anpassen). Wie kann ich das machen?
Der Grund, warum ich das nicht sehen kann, ist, dass es viele Hunderte, wenn nicht Tausende von Übereinstimmungen gibt. Ich möchte eine bestimmte Anzahl von Zeichen erhalten, die die Zeichenfolge umgeben, und sie dann in uniq
oder etwas weiterleiten, um zu sehen, warum mein Suchen und Ersetzen unerwartete Verhaltensweisen aufweist.
Es kann auch mehrere Übereinstimmungen in derselben Zeile geben!
text-processing
grep
string
user394
quelle
quelle
Antworten:
Die grobe Art zu benutzen
grep
wäre so etwas wieDie Anzahl der Punkte entspricht der Anzahl der Zeichen vor / nach dem begriffenen Text. Mit dieser
-o
Optiongrep
werden nur die Übereinstimmungen ausgegeben, nicht die gesamten Zeilen.Zur Verwendung
uniq
am Ausgang, erinnern Sie sich die Ausgabe zuerst zu sortieren haben. Normalerweise würden Sie das tunWenn Sie an der Trefferzahl für jedes Spiel interessiert sind, können Sie mit eine schöne Ausgabe erhalten
quelle
grep -o '.\{8\}yourtext.\{8\}'
. Dies ist etwas weniger schwindelerregend als das Zählen von 8 Punkten.Ausgehend von der Antwort von @rozcietrzewiacz kann ich auf erweitern
quelle
-o
gibt nur das erste Spiel, wenn sich zwei Spiele überschneiden:echo 'aaabbbccc' | grep -o 'bb