как заставить команду 'ack' напечатать имя файла, который нашел результат в каждой строке

1102
Prashant Bhate

По умолчанию ackкоманда печатает вывод следующим образом

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

Есть ли способ вывести результат следующим образом?

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

Несмотря на то, что есть --output=exprвывод совпадения на основе группы захвата регулярных выражений, я не уверен, есть ли какой-нибудь способ получить имя файла, который соответствует тексту, наряду с номером строки

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

если невозможно с ack, есть ли альтернативный способ сделать это?

1

1 ответ на вопрос

2
Prashant Bhate

Ok a quick scan through ack source I found following command line option to get required result

ack --jsp --nogroup -o '(</(div)>)' a.jsp:5:</div> a.jsp:10:</div> b.jsp:3:</div> b.jsp:8:</div> 

or

ack --jsp --nogroup --output='$2' '(</(div)>)' a.jsp:5:div a.jsp:10:div b.jsp:3:div b.jsp:8:div 

Похожие вопросы