Estou procurando encontrar e substituir dentro de um dump de banco de dados gigante, e não está fazendo o que acho que deveria acontecer. Gostaria de grep para minha string de destino no arquivo e, em seguida, ver os 8 caracteres ao redor ou mais (talvez seja necessário ajustar esse número, dependendo). Como eu posso fazer isso?
A razão pela qual não posso ocular isso é porque existem muitas centenas, senão milhares de partidas. Quero obter um número de caracteres ao redor da string e, em seguida, canalizá-la uniq
ou algo para ver por que minha localização e substituição está tendo comportamentos inesperados.
Além disso, pode haver várias correspondências na mesma linha!
text-processing
grep
string
user394
fonte
fonte
Respostas:
O modo bruto de usar
grep
seria algo comoO número de pontos corresponde ao número de caracteres antes / depois do texto em grep. A
-o
opção produzgrep
apenas as correspondências, não as linhas inteiras.Para usar
uniq
na saída, lembre-se de que você deve classificar a saída primeiro. Normalmente, você fariaSe você estiver interessado na contagem de hits de cada partida, poderá obter resultados agradáveis usando
fonte
grep -o '.\{8\}yourtext.\{8\}'
. Isso é um pouco menos vertiginoso do que contar 8 pontos.A partir da resposta de @rozcietrzewiacz, posso expandir para
fonte
-o
dá apenas o primeiro jogo quando dois jogos se sobrepõem:echo 'aaabbbccc' | grep -o 'bb