Создан скрипт, который использует существующий инструмент, обрабатывающий URL-адреса для получения дополнительной информации.
теперь этот инструмент имеет выходной формат с ключом "-o", но из-за невозможности создать имя файла с "output-$url-tool.txt", где $url - это список, который читается построчно, таким образом: "http://www.something.com, (новая строка) https://www.something.com" и т. д.
Можно ли удалить URL-адрес при его обработке, чтобы создать файл с удаленным именем «output-something.com-tool.txt» для каждого URL-адреса?
это может быть немного нечетко для чтения, но я немного заблудился и не знаю другого способа спросить об этом. мне жаль.
см. пример ниже того, что я пробовал, но, очевидно, не работает из-за разметки файла.
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
, чтобы сделать s
в https
необязательным, и включает только доменное имя в имени файла, удаляя все ранее в URL-адресе вместе со всем путем.
Обратите внимание, что для extglob
требуется bash версии 4 или выше.
Вы не представляете, как глупо я себя сейчас чувствую... но я благодарна и признательна за ваш ответ! бесконечно благодарен!