Existe-t-il un moyen de créer à partir de rien, un fichier qui est une séquence de nombres, en commençant par un nombre donné, un par ligne?
quelque chose comme
magic_command start 100 lines 5 > b.txt
et puis, b.txt
serait
100
101
102
103
104
Existe-t-il un moyen de créer à partir de rien, un fichier qui est une séquence de nombres, en commençant par un nombre donné, un par ligne?
quelque chose comme
magic_command start 100 lines 5 > b.txt
et puis, b.txt
serait
100
101
102
103
104
Réponses:
Il existe déjà une commande pour cela:
seq 100 104
imprimera ces numéros sur des lignes distinctes:
100
101
102
103
104
Il suffit donc de diriger cette sortie dans un fichier:
seq 100 104 > my_file.txt
et seq 100 2 104
imprimera par tranches de deux, à savoir: 100
, 102
,104
seq
vient de GNU Coreutils, pas d'Unix. GNU signifie même que GNU n'est pas Unix!
Linux est livré avec la seq
commande qui fait exactement cela. Si vous n'avez pas la seq
commande, c'est une ligne simple:
i=100; while [ $i -le 104 ]; do echo $i; i=$((i+1)); done >b.txt
ou en ksh / bash / zsh
for ((i=100; i<=104; i++)); do echo $i; done >b.txt
ou en zsh
print -l {100..104} >b.txt
$i
.
frapper:
printf '%s\n' {100..105}
perl:
perl -le 'print for 100..104'
avant JC:
echo 'for (i = 100 ; i <= 104 ; ++i) i' | bc
dc:
echo '100 104 sb [p 1 + d lb !<m] sm lm x' | dc
Si cela ne vous dérange pas un espace devant la plupart d'entre eux:
echo -e {100..104}\\n >numbers-file.txt
Sans l'espace mais avec une commande supplémentaire:
echo {100..104} | sed 's/ /\n/g' >numbers-file.txt
Modifier pour une commande bonus vim (ouvrir vim):
i100[esc]qqyyp[ctrl-a]q2@q:w numbers-file.txt
Pour plus de chiffres, augmentez en 2
conséquence.
printf '%s\n' {100..104}
En plus d' utiliser seq
, while
, for
, printf
, perl
, echo
comme indiqué dans l' exemple précédent, vous pouvez également utiliser Python
python -c "print list(range(100,105))"
Exemple:
[user@linux ~]~ python -c "print list(range(100,105))"
[100, 101, 102, 103, 104]
[user@linux ~]~