Как заставить команду 'ack' напечатать имя файла, который нашел результат в каждой строке
По умолчанию 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 ответ
Хорошо, быстрое сканирование через источник подтверждения Я нашел следующую опцию командной строки, чтобы получить требуемый результат
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