如何将用户指定的变量写入文本文件中的URL列表?

时间:2016-04-05 14:45:56

标签: bash

我有一个包含多个网址list.txt列表的文本文件。我正在尝试向此列表中的每个搜索字符串添加一个变量,以便像https://www.google.com/search?q=这样的行将附加变量"$v"或其正确的等效内容,看起来像https://www.google.com/search?q="$v" < / p>

我的目标是执行类似下面的代码,以便每次执行脚本时,list.txt中的变量都可以重新定义。但我似乎无法弄清楚如何将"$v"中的list.txt解释为用户指定的变量。

#!/bin/bash

echo "Enter you query"
read -p "" v

cat list.txt | while read urls; do 
lynx -dump -listonly -get_data "$urls"; done

编辑 - 应该注意的是,对于此列表中的某些网址,搜索字符串不在该行的末尾。例如http://example.com/?s="${v}"&x=0&y=0其中"{v}"是我要放置的变量。

2 个答案:

答案 0 :(得分:2)

为什么不这样做:

lynx -dump -dump -listonly -get_data "${urls}${v}"

"${urls}${v}"将为https://www.google.com/search?q=foo(如果foo是用户输入)。

简单示例

输入

$ cat urls.txt 
http://example.com/q=
http://example.com/r=

变量:

$ v=foo

循环:

$ cat urls.txt| while read url
do
  echo "${url}${v}"
done

输出:

http://example.com/q=foo
http://example.com/r=foo

答案 1 :(得分:2)

sed无需循环即可处理此问题

$ cat urls

http://example.com/q={v}&x=0
http://example.com/q=1&r={v}&z=0

$ v=foo; sed "s/{v}/$v/" urls

http://example.com/q=foo&x=0
http://example.com/q=1&r=foo&z=0

使用标记(此处为{v})指定变量的位置并进行替换。