"cat -n" добавит номера строк. Например: ls | cat -n
Просто,
printf '0\n%.0s' {1..1000}
или используя для цикла
,
for i in {1..1000}; do echo "0"; done
используя awk
,
awk 'BEGIN{for(c=0;c<1000;c++) print "0"}'
Как указал @ StéphaneChazelas, Для использования {1..1000}
требуется zsh
или последние версии bash
, yash
или ksh93
, а также означает сохранение всего диапазона в памяти (возможно, несколько раз). Вы обнаружите, что он становится намного медленнее (если он не дает сбой для OOM), чем использование awk
или yes 0 | напор ...
для больших диапазонов, например {1..10000000}
. Или, другими словами, он плохо масштабируется. Возможный обходной путь - использовать
for ((i=0; i<=10000000;i++)); do echo 0; done
( ksh93
/ zsh
/ bash
), не будет проблем с памятью, но все равно будет иметь порядок ] медленнее, чем специальный инструмент или подход на реальном языке программирования.
Вы можете использовать yes (1) для этого (подключено к head (1) ...):
yes 0 | head -n 1000 > data_file_with_a_thousand_0s.txt
и если вам нужен миллион нулей, замените 1000
с 1000000
PS. В прежние времена голова -1000
было достаточно, поскольку сегодня эквивалентно голова-1000
.
perl -e 'print "0\n" x 1000' > file.txt
Как отмечает @ Stéphane Chazelas, это быстро для больших чисел, но может вызвать проблемы с памятью (в этом случае используйте подход yes | head
)
сравнение производительности, выбранный лучший из 3 непрерывных прогонов
$ time perl -e 'print "0\n" x 100000000' > /dev/null
real 0m0.117s
$ time python -c 'import sys; sys.stdout.write("0\n" * 100000000)' > /dev/null
real 0m0.184s
$ time yes 0 | head -n 100000000 > /dev/null
real 0m0.979s
$ time awk 'BEGIN{for(c=0;c<100000000;c++) print "0"}' > /dev/null
real 0m12.933s
$ time seq 0 0 0 | head -n 100000000 > /dev/null
real 0m19.040s