Использование URL-адресов в качестве аргумента для команды и имени выходного файла

Использование URL-адресов в качестве аргумента для команды и имени выходного файла

Я пытаюсь использовать XARGS или FOR в одной строке, чтобы принять списокURL-адресав качестве аргументов, это не удается, так как имя файла не может быть URL. Мы пробовали сделать это с FOR и XARGS, но это не удается:

$for i in $(cat example.txt);do echo $i > $i; done
bash: http://example.site.com: No such file or directory
bash: https://secureexample.com: No such file or directory

$cat example.txt | xargs -I {} sh -c "echo  {} > {}"
sh: 1: cannot create http://example.site.com: Directory nonexistent
sh: 1: cannot create https://secureexample.com: Directory nonexistent

можно ли удалить косые черты из аргумента во втором вхождении (имя выходного файла), чтобы получить отдельный файл для каждого хоста, например:

http.example.site.com
https.secureexample.com

Мои познания в однострочном bash довольно ограничены, к сожалению, таковы предпочтения компании. Я пробовал использовать фигурные скобки в имени файла и менять значение с помощью SED, AWK и даже CUT, но, как я уже сказал, мои познания слишком ограничены. Я также пробовал несколько аргументов с XARGS и FOR, но мне также не удалось заставить это работать.

Мне удалось обойти эту проблему, создав отдельные файлы сURIвместоURL-адреса, а затем дополнить http:// и https://, но это означает удвоение файлов и удвоение команд, например:

$cat http_example.txt
example.site.com
secureexample.com 
$cat http_example.txt | xargs -I {} sh -c "echo  http://{} > {}"
$ls -la
-rw-r--r-- 1 root root   24 Mar 22 08:06 example.site.com
-rw-r--r-- 1 root root   25 Mar 22 08:06 secureexample.com

Естьлюбойкак заставить это работать в одной строке bash-команды, используя файл с URL-адресами? спасибо!

решение1

while read -r i;do echo "$i">"${i#http*://}";done<example.txt

Это удаляет ведущую http(s)://часть, создавая example.site.comи secureexample.comфайлы.

Это ${i#http*://}конструкция, которая удаляет из $iведущей части соответствие http*://( *является подстановочным знаком).


while read -r i;do echo "$i">"$(echo "$i"|sed 's|://|.|')";done<example.txt

Этот создает файлы http.example.site.comи https.secureexample.com.

Заменяет строки входного файла sedна .://.

Связанный контент