Wie lässt man den Befehl "ack" den Dateinamen drucken, der in jeder Zeile das Ergebnis gefunden hat?

1175
Prashant Bhate

Standardmäßig ackdruckt der Befehl die Ausgabe auf folgende Weise

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

Gibt es eine Möglichkeit, das Ergebnis auf folgende Weise auszugeben?

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

Obwohl die --output=exprÜbereinstimmung anhand der Regex-Capture-Gruppe ausgegeben werden soll, bin ich nicht sicher, ob es eine Möglichkeit gibt, den Namen der Datei zu ermitteln, die zusammen mit der Zeilennummer Text gefunden hat

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

Wenn es mit ack nicht möglich ist, gibt es eine alternative Möglichkeit, dies zu tun?

1

1 Antwort auf die Frage

2
Prashant Bhate

Ok ein kurzer Scan durch ack source Ich habe folgende Befehlszeilenoption gefunden, um das gewünschte Ergebnis zu erhalten

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

oder

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