Je cherche à faire une recherche et un remplacement dans un vidage de base de données géant, et il ne fait pas ce que je pense devrait se produire. Je voudrais grep pour ma chaîne cible dans le fichier, puis voir les 8 caractères environnants environ (je pourrais avoir besoin d'ajuster ce nombre, selon). Comment puis je faire ça?
La raison pour laquelle je ne peux pas regarder cela est parce qu'il y a plusieurs centaines, voire des milliers de matchs. Je veux obtenir un certain nombre de caractères entourant la chaîne, puis la canaliser uniq
ou quelque chose pour voir pourquoi ma recherche et remplacement a des comportements inattendus.
De plus, il peut y avoir plusieurs correspondances sur la même ligne!
text-processing
grep
string
user394
la source
la source
Réponses:
La manière grossière d'utiliser
grep
serait quelque chose commeLe nombre de points correspond au nombre de caractères avant / après le texte saisi. L'
-o
option rend lagrep
sortie uniquement les correspondances, pas les lignes entières.Pour l'utiliser
uniq
sur la sortie, n'oubliez pas que vous devez d'abord trier la sortie. Donc, généralement, vous feriezSi vous êtes intéressé par le nombre de résultats pour chaque correspondance, vous pouvez obtenir une sortie agréable en utilisant
la source
grep -o '.\{8\}yourtext.\{8\}'
. C'est un peu moins étourdissant que de compter 8 points.À partir de la réponse de @rozcietrzewiacz, je peux développer
la source
-o
ne donne que le premier match lorsque deux matchs se chevauchent:echo 'aaabbbccc' | grep -o 'bb