criando uma seqüência de números, um por linha em um arquivo

22

Existe uma maneira de criar a partir 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, em seguida, b.txt seria

100
101
102
103
104
    
por SpaceDog 29.11.2011 / 00:29

5 respostas

39

Já existe um comando para isso:

seq 100 104

imprimirá esses números em linhas separadas:

100
101
102
103
104

Portanto, basta direcionar essa saída para um arquivo:

seq 100 104 > my_file.txt

e seq 100 2 104 serão impressos em incrementos de dois, a saber: 100 , 102 , 104

    
por 29.11.2011 / 00:37
12

O Linux vem com o comando seq , que faz exatamente isso. Se você não tiver o comando seq , é 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
    
por 29.11.2011 / 00:49
7

bash:

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
    
por 29.11.2011 / 13:56
1

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 vim (vim aberto):

i100[esc]qqyyp[ctrl-a]q2@q:w numbers-file.txt

Para mais números, aumente 2 de acordo.

    
por 29.11.2011 / 00:36
1

Além de usar seq , while , for , printf , perl , echo como mostrado no exemplo anterior, você também pode usar o 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 ~]~ 
    
por 05.12.2017 / 16:32