创建了一个脚本,该脚本利用了现有的工具来处理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
答案 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
这使用extglob
将s
中的https
设为可选,并且仅将域名包含在文件名中,然后将URL中的所有内容以及整个路径都剥离掉。 / p>
请注意,extglob
需要bash版本4或更高版本。