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


1

По умолчанию 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, есть ли альтернативный способ сделать это?

Ответы:


2

Хорошо, быстрое сканирование через источник подтверждения Я нашел следующую опцию командной строки, чтобы получить требуемый результат

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


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

или же

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


a.jsp:5:div
a.jsp:10:div
b.jsp:3:div
b.jsp:8:div
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.