Eu não tenho o utilitário ack-grep
no meu mac, então essa solução awk
funcionará para você?
awk -v FS=[?\"] '/param/{print FILENAME; print $3 }' INPUT_FILE
Execução:
[jaypal:~/Temp] cat file0
<a href="http://example.com/fnord.layername.html?parameter=FOO-_-BAR-_-FNORD" class="poit">
<img ... />
</a>
[jaypal:~/Temp] awk -v FS=[?\"] '/param/{print FILENAME; print $3 }' file0
file0
parameter=FOO-_-BAR-_-FNORD
Provável trabalho para você:
Se a obtenção do nome do arquivo juntamente com os valores de parâmetro for crítica, você poderá executar isso com um for loop
simples ou poderá redirecionar a saída que está recebendo atualmente para um arquivo ou canalizá-la para o seguinte awk
one-liner.
Simples para loop:
[jaypal:~/Temp] for i in ./file*.txt; do awk -v FS=[?\"] '/param/{print FILENAME; print $3"\n" }' "$i"; done
./file01.txt
parameter=FOO-_-BAR-_-FNORD
./file02.txt
parameter=POIT-_-NARF-_-BAZINGA
Redirecionando sua saída atual para um arquivo e chamando awk
:
O exemplo a seguir pressupõe redirection
de sua saída atual para um arquivo chamado temp.file .
[jaypal:~/Temp] cat temp.file
fileName.txt
1:<a href="http://example.com/fnord.layername.html?parameter=FOO-_-BAR-_-FNORD" class="poit">
fileName2.txt
5:<a href="http://example.com/fnord.layername.html?parameter=POIT-_-NARF-_-BAZINGA" class="poit">
[jaypal:~/Temp] awk -v FS=[?\"] 'NF==1{ print $0 }/param/{ print $3"\n" }' temp.file
fileName.txt
parameter=FOO-_-BAR-_-FNORD
fileName2.txt
parameter=POIT-_-NARF-_-BAZINGA