linux wget 或curl 能从文件读取吗?

我用wget或者curl 命令获取网页的源代码做了个脚本,然后从源代码里grep及awk要想的数据。一共有70多条网址,这样的话,每执行一次都需要手动更换一下网址。有没有办法,把网址单独放在一个文件中。能直接读取文件,循环到最后一条结束。以下是我的获取网页源代码及处理数据的脚本:
wget "http://xxx.xxxx.com/xxx.html" -O ~/kefu/aqws1/c.txt
l=0

while read line
do
l=`expr $l + 1`
c=$(echo $line | grep "版块主题" | wc -l)
if [ $c != 0 ]; then
echo "find $l"
sed "1,${l}d" ~/kefu/aqws1/c.txt > ~/kefu/aqws1/m.txt
fi
done < ~/kefu/aqws1/c.txt
cat m.txt ||grep -E "<a href=\"home.php\?mod=space&uid=.*c=\"1\">.*</a>"|awk -F '>' '{print $2}'|awk -F '<' '{print $1}' >~/kefu/aqws1/fabiaoren.txt
请教达人指点。或者能一次性把网址都放进去,依次读取处理数据后写入到一个文件中

wget -i [文件名] -P [保存位置]

文件中,一行一个URL追问

你这样的话,会把所有下载的内容存到文件后再执行脚本中wget下面的 sed 及grep内容。 我需要的是读取一个网址后把脚本后面的命令执行完写入到文件,然后再读取第二条网址—处理数据再>>到文件中。

追答

while read line
do
wget $line -O ~/kefu/aqws1/c.txt

#处理获取的网页
#……
#……

done < url_list_file

是这意思吗?

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-10-24
把所有的URL放在一个文件里,每行一个然后做一个循环,每读一行就把他赋给url变量,你再去wget 文件做相应处理即可,

urlfile=/tmp/urls
for url in `cat $urlfile`
do

wget "$url" -O ~/kefu/aqws1/c.txt
l=0

while read line
do
l=`expr $l + 1`
c=$(echo $line | grep "版块主题" | wc -l)
if [ $c != 0 ]; then
echo "find $l"
sed "1,${l}d" ~/kefu/aqws1/c.txt > ~/kefu/aqws1/m.txt
fi
done < ~/kefu/aqws1/c.txt
cat m.txt ||grep -E "<a href=\"home.php\?mod=space&uid=.*c=\"1\">.*</a>"|awk -F '>' '{print $2}'|awk -F '<' '{print $1}' >>~/kefu/aqws1/fabiaoren.txt

done
相似回答