Как указано в комментарии , вам необходимо правильно заключать переменные в кавычки при вызове 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...
Вы все делаете правильно. Это серверы Гутенберга временно (сломаны, я надеюсь ).
Происходит следующее: :страницы, которые вы загружаете, ссылаются на файлы EPUB в каталоге aleph.gutenberg.org/cache/, но aleph.gutenberg.org запрещает роботу доступ к /cache. Вот почему Wget пропускает все файлы EPUB.
Я написал электронное письмо в Project Gutenberg и надеюсь, что они скоро это исправят – их контактная страница обещает ответить в течение двух дней. Просто попробуйте еще раз через несколько дней. (Или найдите способ обойти файл robots.txt. Я не хочу публиковать его здесь, потому что в большинстве случаев люди используют его не по назначению, чтобы делать плохие вещи.)
Обновление от 29 ноября :проблема устранена.