Написать во всех строках плюс один

Можете ли вы помочь мне с Unix-скриптом, чтобы получить такой результат в файле:


apple1
apple2
apple3

и т. д. до 100

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

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

5 ответов

Решение

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

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

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

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

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

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

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

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

Бонусное решение seq-golf (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
Другие вопросы по тегам