Risposte:
Esiste già un comando per questo:
seq 100 104
stamperà questi numeri su righe separate:
100
101
102
103
104
Quindi basta dirigere questo output in un file:
seq 100 104 > my_file.txt
e seq 100 2 104
stamperà in incrementi di due, vale a dire: 100
, 102
,104
seq
proviene da GNU Coreutils, non da Unix. GNU sta anche per GNU is Not Unix!
Linux viene fornito con il seq
comando che fa esattamente questo. Se non hai il seq
comando, è un semplice one-liner:
i=100; while [ $i -le 104 ]; do echo $i; i=$((i+1)); done >b.txt
o in ksh / bash / zsh
for ((i=100; i<=104; i++)); do echo $i; done >b.txt
o in zsh
print -l {100..104} >b.txt
$i
.
bash:
printf '%s\n' {100..105}
perl:
perl -le 'print for 100..104'
avanti Cristo:
echo 'for (i = 100 ; i <= 104 ; ++i) i' | bc
dc:
echo '100 104 sb [p 1 + d lb !<m] sm lm x' | dc
Se non ti dispiace uno spazio davanti a loro:
echo -e {100..104}\\n >numbers-file.txt
Senza lo spazio ma con un comando aggiuntivo:
echo {100..104} | sed 's/ /\n/g' >numbers-file.txt
Modifica per un comando vim bonus (apri vim):
i100[esc]qqyyp[ctrl-a]q2@q:w numbers-file.txt
Per più numeri, aumentare di 2
conseguenza.
printf '%s\n' {100..104}
Oltre a utilizzare seq
, while
, for
, printf
, perl
, echo
come mostrato nell'esempio precedente, è anche possibile utilizzare Python
python -c "print list(range(100,105))"
Esempio:
[user@linux ~]~ python -c "print list(range(100,105))"
[100, 101, 102, 103, 104]
[user@linux ~]~