Existe uma maneira de criar do nada, um arquivo que é uma sequência de números, começando em um determinado número, um por linha?
algo como
magic_command start 100 lines 5 > b.txt
e então, b.txt
seria
100
101
102
103
104
Existe uma maneira de criar do nada, um arquivo que é uma sequência de números, começando em um determinado número, um por linha?
algo como
magic_command start 100 lines 5 > b.txt
e então, b.txt
seria
100
101
102
103
104
Respostas:
Já existe um comando para isso:
seq 100 104
imprimirá esses números em linhas separadas:
100
101
102
103
104
Então, basta direcionar essa saída para um arquivo:
seq 100 104 > my_file.txt
e seq 100 2 104
será impresso em incrementos de dois, a saber: 100
, 102
,104
seq
é do GNU Coreutils, não do Unix. GNU ainda significa GNU não é Unix!
O Linux é fornecido com o seq
comando que faz exatamente isso. Se você não possui o seq
comando, é fácil:
i=100; while [ $i -le 104 ]; do echo $i; i=$((i+1)); done >b.txt
ou em ksh / bash / zsh
for ((i=100; i<=104; i++)); do echo $i; done >b.txt
ou em zsh
print -l {100..104} >b.txt
$i
.
bater:
printf '%s\n' {100..105}
perl:
perl -le 'print for 100..104'
bc:
echo 'for (i = 100 ; i <= 104 ; ++i) i' | bc
dc:
echo '100 104 sb [p 1 + d lb !<m] sm lm x' | dc
Se você não se importa com um espaço na frente da maioria deles:
echo -e {100..104}\\n >numbers-file.txt
Sem o espaço, mas com um comando extra:
echo {100..104} | sed 's/ /\n/g' >numbers-file.txt
Edite para um comando bônus do vim (vim aberto):
i100[esc]qqyyp[ctrl-a]q2@q:w numbers-file.txt
Para mais números, aumente de 2
acordo.
printf '%s\n' {100..104}
Além de usar seq
, while
, for
, printf
, perl
, echo
como mostrado no exemplo anterior, você pode também usar Python
python -c "print list(range(100,105))"
Exemplo:
[user@linux ~]~ python -c "print list(range(100,105))"
[100, 101, 102, 103, 104]
[user@linux ~]~