Curl / Grepは、一致する場合にのみURLを持つファイルに出力を保存します。

Curl / Grepは、一致する場合にのみURLを持つファイルに出力を保存します。

.txtカールURLがあるGrepと一致する場合にのみ出力ファイルを保存したいと思います。

たとえば、私が今持っているものは次のとおりです。

xargs -d '\n' -I LINE bash -c "curl -s -o - 'LINE/matchme!'| grep -o 'matchme!'" > saveme.txt < domain.txt

domain.txtファイルからURLを読み込みますが、saveme.txt文字列が一致しなくても+を生成しsaveme.txt、一致するとカールURLが内部に含まれません。

期待される出力saveme.txt

https://example.com/matchme!?random=param- 私と一緒に!

https://example2.com/matchme! - 私と一緒に!

https://example3.com/matchme! - 私と一緒に!

そのようなスクリプトをどのように書くのですか?

答え1

pattern='matchme!'
while IFS= read -r domain; do
  url="$domain/matchme!"
  curl -s "$url" | grep -q "$pattern" && printf '%s - %s\n' "$url" "$pattern" >> saveme.txt
done < domain.txt

固定文字列を探している場合は、-Fオプションに追加してください。grep

関連情報