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



创建了一个脚本,该脚本利用处理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

您使用

的结构不是特别安全。由于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

这使用extglob使https中的s可选,并且仅包括文件名中的域名购买,去除URL中较早的所有内容以及整个路径。

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

最新更新