como fazer o comando 'ack' imprimir o nome do arquivo que encontrou o resultado em cada linha

1

Por padrão, o comando ack imprime a saída da seguinte maneira

ack --jsp '</div>'

a.jsp
5:</span></div>
10:</table></div>
b.jsp
3:</div><div>xyz
8:</div><a>

existe alguma maneira de produzir o resultado da seguinte maneira?

<filename>:<linenum>:<matchedtext>   

a.jsp:5:</div>
a.jsp:10:</div>
b.jsp:3:</div>
b.jsp:8:</div>

Embora exista --output=expr para a correspondência de saída com base no grupo de captura regex, não tenho certeza se existe alguma maneira de obter o nome do arquivo que correspondeu ao texto junto com o número da linha

ack --jsp -o -h --output=':$1:$2' '(</(div)>)'

:</div>:div
:</div>:div
:</div>:div
:</div>:div

se não for possível com o ack, existe alguma maneira alternativa de fazer isso?

    
por Prashant Bhate 14.06.2012 / 23:11

1 resposta

2

Ok, uma varredura rápida na fonte ack Encontrei a seguinte opção de linha de comando para obter o resultado necessário

ack --jsp --nogroup -o '(</(div)>)'


a.jsp:5:</div>
a.jsp:10:</div>
b.jsp:3:</div>
b.jsp:8:</div>

ou

ack --jsp --nogroup --output='$2' '(</(div)>)'


a.jsp:5:div
a.jsp:10:div
b.jsp:3:div
b.jsp:8:div
    
por 14.06.2012 / 23:50

Tags