¿Hay alguna manera de crear de la nada un archivo que sea una secuencia de números, comenzando en un número dado, uno por línea?
algo como
magic_command start 100 lines 5 > b.txt
y luego, b.txt
sería
100
101
102
103
104
¿Hay alguna manera de crear de la nada un archivo que sea una secuencia de números, comenzando en un número dado, uno por línea?
algo como
magic_command start 100 lines 5 > b.txt
y luego, b.txt
sería
100
101
102
103
104
Respuestas:
Ya hay un comando para esto:
seq 100 104
imprimirá estos números en líneas separadas:
100
101
102
103
104
Tan solo dirija esta salida a un archivo:
seq 100 104 > my_file.txt
y seq 100 2 104
se imprimirá en incrementos de dos, a saber: 100
, 102
,104
seq
es de GNU Coreutils, no de Unix. ¡GNU incluso significa que GNU no es Unix!
Linux se envía con el seq
comando que hace exactamente eso. Si no tiene el seq
comando, es fácil:
i=100; while [ $i -le 104 ]; do echo $i; i=$((i+1)); done >b.txt
o en ksh / bash / zsh
for ((i=100; i<=104; i++)); do echo $i; done >b.txt
o en zsh
print -l {100..104} >b.txt
$i
.
golpetazo:
printf '%s\n' {100..105}
perl:
perl -le 'print for 100..104'
antes de Cristo:
echo 'for (i = 100 ; i <= 104 ; ++i) i' | bc
corriente continua:
echo '100 104 sb [p 1 + d lb !<m] sm lm x' | dc
Si no te importa un espacio delante de la mayoría de ellos:
echo -e {100..104}\\n >numbers-file.txt
Sin el espacio pero con un comando extra:
echo {100..104} | sed 's/ /\n/g' >numbers-file.txt
Editar para un comando vim adicional (vim abierto)
i100[esc]qqyyp[ctrl-a]q2@q:w numbers-file.txt
Para más números, aumente en 2
consecuencia.
printf '%s\n' {100..104}
Además de usar seq
, while
, for
, printf
, perl
, echo
como se muestra en el ejemplo anterior, también puede usar Python
python -c "print list(range(100,105))"
Ejemplo:
[user@linux ~]~ python -c "print list(range(100,105))"
[100, 101, 102, 103, 104]
[user@linux ~]~