Assumindo que a maior parte do atributo href é sempre a mesma, e o texto interno é sempre o mesmo, e você tem um arquivo de origem HTML, então algo assim deve funcionar:
grep -Eo '<a href="https://always/same/link/same-name_([0-9]+)\.html">always same text</a>' HTML-source-file
grep
pesquisará o HTML-source-file
do padrão https://always/same/link/same-name_([0-9]+)\.html
. Esse padrão corresponderá a qualquer string composta dos seguintes elementos, em ordem:
- link
- qualquer número de dígitos de 0 a 9
- .html
O -E
sinalizador diz grep
para interpretar o padrão como uma expressão regular estendida.
O -o
sinalizador diz grep
para produzir apenas o texto que corresponde ao padrão.
Para usar variáveis, você pode usar aspas duplas em torno da expressão regular, escapar as aspas duplas dentro da expressão regular com barras invertidas e colocar os nomes das variáveis entre chaves:
$ link_path=https://always/same/link/
$ link_name=same-name
$ grep -Eo "<a href=\"${link_path}${link_name}_([0-9]+)\.html\">always same text</a>" HTML-source-file
Se, por alguma razão, o acima de grep
com aspas duplas vazadas não funcionar, você também pode usar isto:
$ link_path=https://always/same/link/
$ link_name=same-name
$ grep -Eo '<a href="'${link_path}${link_name}'_([0-9]+)\.html">always same text</a>' HTML-source-file