将url处理到应用程序的输出中并剥离它们以创建具有url名称的文件

时间:2019-05-28 20:14:01

标签: bash

创建了一个脚本,该脚本利用了现有的工具来处理url以获取其他信息。

现在,此工具的输出格式带有“ -o”开关,但是由于无法使用“ output- $ url-tool.txt”创建文件名,其中$ url是一个列表,该列表可读取行按行,例如:“ http://www.something.com,(新行)https://www.something.com”等。

是否可以在处理URL时剥离URL,以创建每个URL剥离名称为“ output-something.com-tool.txt”的文件?

这可能有点模糊,但我有点迷路,不知道有其他方法可以问这个。对不起。

有关我尝试的操作,请参见下面的示例,但由于文件的标记而显然不起作用。

for url in $(cat /urls.txt); do tool -u $url -o output-$url-tool.html; done

1 个答案:

答案 0 :(得分:0)

您使用的结构不是特别安全。由于cat urls.txt被空格分隔,因此文件中任何意外的空格都会中断您的处理。如果您确定要逐行处理,请使用read

您还希望引用变量,并删除或修改文件名中不允许的字符。

while read -r url; do
  tool -u "$url" -o "output-${url//\//_}-tool.html"
done < urls.txt

如果要剥离该方法,则可以通过附加参数扩展来实现:

shopt -s extglob
while read -r url; do
  url="${url#http?(s)://}"
  url="${url%%/*}"
  tool -u "$url" -o "output-${url}-tool.html"
done < urls.txt

这使用extglobs中的https设为可选,并且仅将域名包含在文件名中,然后将URL中的所有内容以及整个路径都剥离掉。 / p>

请注意,extglob需要bash版本4或更高版本。