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