Написать во всех строках плюс один
Можете ли вы помочь мне с 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
Если bash
доступно, следующее не использует никаких внешних команд:
( read -r t; for i in {1..100}; do echo "$t$i" >> outfile; done ) < apple.txt