Combine um número com dígitos fixos ao extrair conteúdo da web

Combine um número com dígitos fixos ao extrair conteúdo da web

Estou tentando analisar páginas da web de origem, tentando encontrar todos os href semelhantes a este:

href='http://example.org/index.php?showtopic=509480

onde o número depois showtopic=é aleatório (e com 6 números fixos de dígitos, por exemplo, 123456 - 654321)

while read -r line
do
    source=$(curl -L line) #is this the right way to parse the source?
    grep "href='http://example.org/index.php?showtopic=" >> output.txt 
done <file.txt #file contains a list of web pages

Como posso pegar toda a linha se não sei qual é o número? Talvez um segundo grep com uma regex? Eu estava pensando em usar um intervalo no awk semelhante a:

awk "'/href='http://example.org/index.php?showtopic=/,/^\s/'" >> file.txt

ou um grep duplo como:

grep "href='http://example.org/index.php?showtopic=" | grep -e ^[0-9]{1,6}$ >> output.txt 

Responder1

cat input.txt |grep "href='http://example.org/index.php?showtopic=" > output.txt

cat gera o conteúdo do arquivo que é canalizado para grep. grep compara linha por linha e grava linhas inteiras no texto de saída.

Alternativamente, você pode usar sed:

 sed -n "\#href='http://example.org/index.php?showtopic=#p"  input.txt >  output-sed.txt

informação relacionada