Загрузка контента с веб-страницы с помощью wget

Как указано в комментарии , вам необходимо правильно заключать переменные в кавычки при вызове sed:

for i in $(seq 1 6 99); do
    sed "$i"','"$((i+2))"'!d' test.txt > "o$i.txt"
done

Ваши переменные не раскрываются в одинарных кавычках и воспринимаются буквально($i= вставить перед последней строкой ). Расширение работает с двойными кавычками (в этом примере также не работают кавычки )и вам нужно $((…))для арифметического вычисления и вывода его результата. Остальные части скрипта остаются в одинарных кавычках.

Вы также должны использовать более новый синтаксис $(…)для подстановки команд вместо устаревших обратных кавычек `…`, что упрощает цитирование. Вот хороший пример .


Но вы можете использовать оператор GNU sedпервого ~шага вместо цикла:

sed '4~6{N;N;d}' file

Пример:

$ seq 20 | sed '4~6{N;N;d}'
1
2
3
7
8
9
13
14
15
19
20

Пояснение:

sed '4~6d'удалит строку 4, а затем каждую 6-ю строку 10, 16, 22...

С помощью {N;N;d}удаляются две дополнительные строки: 4,5,6, затем 10,11,12...

0
30.11.2020, 20:48
1 ответ

Вы все делаете правильно. Это серверы Гутенберга временно (сломаны, я надеюсь ).

Происходит следующее: :страницы, которые вы загружаете, ссылаются на файлы EPUB в каталоге aleph.gutenberg.org/cache/, но aleph.gutenberg.org запрещает роботу доступ к /cache. Вот почему Wget пропускает все файлы EPUB.

Я написал электронное письмо в Project Gutenberg и надеюсь, что они скоро это исправят – их контактная страница обещает ответить в течение двух дней. Просто попробуйте еще раз через несколько дней. (Или найдите способ обойти файл robots.txt. Я не хочу публиковать его здесь, потому что в большинстве случаев люди используют его не по назначению, чтобы делать плохие вещи.)

Обновление от 29 ноября :проблема устранена.

0
18.03.2021, 22:47

Теги

Похожие вопросы