Haga coincidir un número con dígitos fijos mientras extrae contenido web

Haga coincidir un número con dígitos fijos mientras extrae contenido web

Estoy intentando analizar páginas web de origen, intentando encontrar todos los href similares a este:

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

donde el número posterior showtopic=es aleatorio (y con 6 números fijos de dígitos, por ejemplo, 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

¿Cómo puedo tomar toda la línea si no sé cuál es el número? ¿Quizás un segundo grep con una expresión regular? Estaba pensando en usar un rango en awk similar a:

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

o un doble grep como:

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

Respuesta1

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

cat genera el contenido del archivo que se canaliza a grep. grep lo compara línea por línea y escribe líneas completas en el texto de salida.

Alternativamente puedes usar sed:

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

información relacionada