обрабатывать URL в выходных данных приложения и вырезать их для создания файлов с именем URL - PullRequest
0 голосов
/ 28 мая 2019

Создан скрипт, который использует существующий инструмент, который обрабатывает URL для получения дополнительной информации.

Теперь этот инструмент имеет выходной формат с переключателем "-o", но из-за невозможности создатьимя файла с "output- $ url-tool.txt", где $ url - это список, который построчно читается, таким образом: "http://www.something.com, (новая строка) https://www.something.com" и т. д.

Можно ли убрать URL-адрес во время его обработки, чтобы создать файл с разделенным именем "output -thing.com-tool.txt" на URL-адрес?

это может быть немного нечетким для чтенияно я вроде заблудился и не знаю другого способа спросить это. Извините.

см. приведенный ниже пример того, что я пытался, но, очевидно, не работает из-за разметки файла.

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

1 Ответ

0 голосов
/ 28 мая 2019

Используемая вами конструкция не особенно безопасна. Так как 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 необязательным, и включает в себя только имя домена в имени файла buy, удаляя все ранее в URL вместе со всем путем.

Обратите внимание, что extglob требует bash версии 4 или выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...