Gostaria de grep
obter uma string, mas também mostrar as cinco linhas anteriores e as cinco linhas seguintes, bem como a linha correspondente. Como eu seria capaz de fazer isso?
search
logging
grep
command-line-interface
Mark Harrison
fonte
fonte
man grep | grep -C 1 context
:)man grep | grep -C 1 "\-C"
;)Respostas:
Para BSD ou GNU,
grep
você pode usar-B num
para definir quantas linhas antes da partida e-A num
o número de linhas após a partida.Se você deseja o mesmo número de linhas antes e depois da utilização
-C num
.Isso mostrará 3 linhas antes e 3 linhas depois.
fonte
-A
e-B
funcionará como quiser-C n
(paran
linhas de contexto) ou apenas-n
(paran
linhas de contexto ... desde que n seja de 1 a 9).fonte
-n
formato e descobri que só funciona até9
. Para15
isso, ele retorna 5 linhas-A
,-B
ou-C
). Geralmente, o especificador de opção é seguido por um valor (-o a.out
para especificar o arquivo de saída no GCC), mas também pode funcionar como uma opção / sinalização simples (-g
para ativar as informações de depuração no GCC). No entanto, os espaços entre as opções são opcionais; portanto, para opções sem valor, é possível mesclá-las (-ABC
), o que significa que-15
é interpretado-1 -5
(duas opções separadas) e as-5
substituições são-1
.O ack trabalha com argumentos semelhantes ao grep e aceita
-C
. Mas geralmente é melhor pesquisar no código.fonte
grep
, não tenho certeza de que usá-lo para "anunciar"ack
(que é uma ótima ferramenta, de fato) é uma boa idéia ...Isso grep "myfile" para "adstring", e mostra 5 linhas antes e depois de cada partida
fonte
Eu normalmente uso
Muitas das ferramentas, como o grep, também possuem arquivos man muito bons. Eu me pego me referindo muito à página de manual do grep porque há muito que você pode fazer com isso.
Muitas ferramentas GNU também têm uma página de informações que pode ter informações mais úteis além da página de manual.
fonte
Use grep
fonte
Procure por "17655" em "/some/file.txt" mostrando o contexto de 10 linhas antes e depois (usando o Awk), saída precedida pelo número da linha seguido por dois pontos. Use isso no Solaris quando o 'grep' não suportar as opções "- [ACB]".
fonte
ripgrep
Se você se preocupa com o desempenho, use
ripgrep
uma sintaxe semelhante agrep
, por exemplo,Também existem parâmetros como
-A
/--after-context
e-B
/--before-context
.A ferramenta é construída sobre o mecanismo regex da Rust, o que a torna muito eficiente em grandes dados.
fonte
Aqui está a solução @Ygor em
awk
Nota: Substitua
a
eb
variáveis pelo número de linhas antes e depois.É especialmente útil para o sistema que não suporta o grep
-A
,-B
e-C
parâmetros.fonte
-5
coloca as5
linhas acima e abaixo da correspondência 'thestring' é equivalente a-C 5
ou-A 5 -B 5
.fonte
O Grep tem uma opção chamada
Context Line Control
, você pode usar o--context
que, simplesmente,ou
Deve fazer o truque
fonte
Eu costumo fazer da maneira compacta
Isso é o equivalente a
fonte
Se você pesquisar código com frequência, AG , o pesquisador prateado é muito mais eficiente (ou seja, mais rápido) do que o grep.
Você mostra as linhas de contexto usando a opção -C.
Por exemplo:
fonte