OS / 2 grep tinha um ótimo recurso onde mostrava n linhas ANTES que o item de pesquisa fosse encontrado. Existe um equivalente no unix em qualquer lugar?

6

O Solaris seria preferível, mas usarei o linux ou algo que eu possa compilar. Existe tal animal?

    
por Stu 20.10.2011 / 18:17

3 respostas

6

Você pode obter o GNU grep e suas dependências para o Solaris de sunfreeware.com como um download binário no formato pkg que é instalado em / usr / local / bin ou como um pacote de código-fonte.

    
por 20.10.2011 / 18:36
19

No que diz respeito ao GNU grep, isto mostrará o número de linhas antes do jogo:

# grep -B number

Equivalente para depois:

# grep -A number

Você pode baixar o GNU Grep aqui: link

    
por 20.10.2011 / 18:19
2

Um pequeno script do awk também funcionará:

#!/usr/bin/awk -f
BEGIN { context=3; }
{ add_buffer($0) }
/pattern/ { print_buffer() }
function add_buffer(line)
{
    buffer[NR % context]=line
}
function print_buffer()
{
    for(i = max(1, NR-context+1); i <= NR; i++) {
        print buffer[i % context]
    }
}
function max(a,b)
{
    if (a > b) { return a } else { return b }
}

substitua /pattern/ pela expressão ou padrão regular real a pesquisar.

    
por 20.10.2011 / 20:09

Tags