ウェブコンテンツをスクレイピングしながら固定桁の数字を一致させる

ウェブコンテンツをスクレイピングしながら固定桁の数字を一致させる

ソース Web ページを解析して、次のようなすべての href を見つけようとしています:

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

後ろの数字showtopic=はランダム(6桁の固定数、例: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

どの番号がわからない場合、行全体を取得するにはどうすればよいでしょうか? 正規表現を使用した 2 回目の grep でしょうか? 次のような awk の範囲を使用することを考えていました:

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

または、次のように二重 grep します。

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

答え1

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

cat は grep にパイプされるファイルの内容を出力します。grep はそれを行ごとに比較し、行全体を出力テキストに書き込みます。

あるいは、sed を使用することもできます。

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

関連情報