Можете ли вы помочь мне с помощью скрипта 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