Один вкладыш, как заказывали:)
URL_1
переменная используется для удобства чтения. Это не обязательно.
#!/bin/bash
URL_1=http://www.squid-cache.org/Versions/
curl "$URL_1" |
grep -Pzo '(?s)Stable Versions.*?langpack' |
sed -rn '$,$s_.*"(.*)">.*(.*) .*_\1squid-\2.tar.gz_p' |
xargs -I{} wget "${URL_1}"{}
grep -Pzo '(?s)Stable Versions.*?langpack'
-P
Интерпретируйте шаблон как регулярное выражение, совместимое с Perl -. -z
опция, необходимая для многострочного поиска. -o
печатать только совпадающие (не -пустые )части совпадающей строки. (?s)
Включено «точка соответствует новой строке» для остальной части регулярного выражения. Информация:Встроенные модификаторы . .*?
нежадное сопоставление. sed -rn '$,$s_.*"(.*)">.*(.*) .*_\1squid-\2.tar.gz_p'
v3/3.5/squid-3.5.26.tar.gz
$,$
обрабатывать только последнюю строку. s
из-за косых черт в тегах
и
.Пример:s_foo_bar_
вместоs/foo/bar/
xargs -I{} wget "${URL_1}"{}
wget
с помощьюxargs
:http://www.squid-cache.org/Versions/
и v3/3.5/squid-3.5.26.tar.gz
. #!/bin/bash
URL_1=http://www.squid-cache.org/Versions/
wget "${URL_1}$(curl "$URL_1" |
grep -Pzo '(?s)Stable Versions.*?langpack' |
sed -rn '$,$s_.*"(.*)">.*(.*) .*_\1squid-\2.tar.gz_p')"
Вероятно, не рекомендуется создавать этот файл с помощью ls
, но, учитывая предоставленный вами образец ввода, вы можете использовать
awk
:awk '{sub(/.gz$/, ""); print}' TempsModel.txt > TempsModel2.txt
sed
:sed 's/.gz$//' TempsModel.txt > TempsModel2.txt
Чтобы создать исходный файл без расширения.gz, вы можете сделать:
for file in /media/Elise/2811226E69F71131/ModelOutput/*; do echo "${file%.gz}"; done > TempsModel.txt
Вы также можете:
set -- /media/Elise/2811226E69F71131/ModelOutput/*
printf '%s\n' "${@%.gz}" > TempsModel.txt
Если доступен zsh, то аналогично этому Используя расширение параметра для создания списка аргументов для mkdir -p
, вы можете использовать квалификатор glob для удаления суффикса на лету:
setopt histsubstpattern extendedglob
print -rl -- /media/Elise/2811226E69F71131/ModelOutput/*.gz(#q:s/%.gz/) > TempsModel2.txt