我有一个包含大约 50 个 URL 的文本文件,我正在尝试卷曲文本文件中的每个 URL,并使用 grep 从 GREP 匹配中输出几行
我无法理解为什么它不起作用,就好像我回显每一行一样,它会正确显示 URL。如果我使用 URL 和 Grep 手动运行 CURL,它就可以工作。但一旦进入循环,它就不会输出任何内容。
while IFS= read -r line
do
echo "$line"
curl -s "$line" | grep "Telephone"
done < links.txt
输入示例:
https://qguild.co.uk/our-butchers/simpsons-butchers-south-hykeham/
https://qguild.co.uk/our-butchers/simpsons-butchers-spalding/
https://qguild.co.uk/our-butchers/simpsons-butchers-lincoln/
https://qguild.co.uk/our-butchers/simpsons-butchers-2/
示例输出:
curl -s "https://qguild.co.uk/our-butchers/simpsons-butchers-south-hykeham/" | grep "Telephone"
<p>Simpsons Butchers,<br />Pennell`s Garden Centre,<br />Newark Road, South Hykeham, Lincoln, LN6 9NT. Telephone: 01522 695419<br />Monday - Saturday : 8am - 5.30pm Sunday : 10am - 4pm</p>
<p>Pennells Garden Centre, Newark Road, SOUTH HYKEHAM, LINCOLN LN6 9NT</p>
<p>Telephone: <a href="tel:01522-695419">01522 695419</a></p> <p>Email: <a href="mailto:[email protected]">[email protected]</a></p>
<p>Website: <a href="http://gsimpsonbutchers.co.uk/" target="_blank" rel="noopener noreferrer">http://gsimpsonbutchers.co.uk/</a></p>
答案1
答案2
您的links.txt
文件可能是 DOS 或 Windows 文本文件。
因此,每行末尾都会有一个额外的回车符,从而干扰 URL 字符串的末尾。
使用 例如 将 URL 列表转换为 Unix 文本格式dos2unix
,然后重试。
答案3
在这里使用输入重定向和while
循环可能会使事情变得过于复杂。在这种情况下,使用cat
andfor
循环更简单:
IFS=$(printf "\n")
for line in $(cat links.txt)
do
echo "$line"
curl -s "$line" | grep "Telephone"
done