Назад | Перейти на главную страницу

напишите все строки плюс один

Можете ли вы помочь мне с помощью скрипта unix получить такой результат в файле:


apple1
apple2
apple3

и т.д .. до 100

из файла apple.txt, который содержит только одно слово - яблоко.

Заранее спасибо!

У Google достаточно ресурсов для Bash Scripting.

В любом случае здесь идет:

for i in {1..100}; do echo "`cat apple.txt`$i"; done

Пока мы все копаем идеи, вот моя, с моей давней любимой малоиспользуемой командой, seq:

echo "" ; apple=`cat /tmp/apple.txt` ; seq 1 100 | sed -e "s/^/$apple/"

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

Вот решение в AWK:

awk '{ while (count++ < 100) print $0 count }' apple.txt > output.txt

Бонус seq-гольф решение (29 символов):

seq -f"$(pg apple.txt)%g" 100

seq по умолчанию начинается с 1, поэтому указывать FIRST параметр. Выходные данные примера не дополняют числа, поэтому формат можно уменьшить. Судя по разметке, пустая строка в примере вывода, вероятно, является ошибкой форматирования.

Изменить (25 символов): seq -f$(<apple.txt)%g 100

seq --format "$(cat apple.txt)%02g" 1 100

Если bash доступен, следующие не используют внешние команды:

( read -r t; for i in {1..100}; do echo "$t$i" >> outfile; done ) < apple.txt