Czy istnieje sposób na stworzenie z powietrza, pliku, który jest sekwencją liczb, zaczynając od podanej liczby, po jednej w wierszu?
coś jak
magic_command start 100 lines 5 > b.txt
i wtedy b.txt
byłoby
100
101
102
103
104
Czy istnieje sposób na stworzenie z powietrza, pliku, który jest sekwencją liczb, zaczynając od podanej liczby, po jednej w wierszu?
coś jak
magic_command start 100 lines 5 > b.txt
i wtedy b.txt
byłoby
100
101
102
103
104
Odpowiedzi:
Jest już na to polecenie:
seq 100 104
wypisze te liczby w osobnych wierszach:
100
101
102
103
104
Więc po prostu skieruj to wyjście do pliku:
seq 100 104 > my_file.txt
i seq 100 2 104
drukuje w odstępach co dwa, a mianowicie: 100
, 102
,104
seq
jest z GNU Coreutils, a nie z Uniksa. GNU oznacza nawet, że GNU to nie Unix!
Linux jest dostarczany z seq
poleceniem, które właśnie to robi. Jeśli nie masz tego seq
polecenia, jest to prosta liniówka:
i=100; while [ $i -le 104 ]; do echo $i; i=$((i+1)); done >b.txt
lub w ksh / bash / zsh
for ((i=100; i<=104; i++)); do echo $i; done >b.txt
lub w zsh
print -l {100..104} >b.txt
$i
.
grzmotnąć:
printf '%s\n' {100..105}
perl:
perl -le 'print for 100..104'
pne:
echo 'for (i = 100 ; i <= 104 ; ++i) i' | bc
dc:
echo '100 104 sb [p 1 + d lb !<m] sm lm x' | dc
Jeśli nie przeszkadza ci miejsce przed większością z nich:
echo -e {100..104}\\n >numbers-file.txt
Bez spacji, ale z dodatkowym poleceniem:
echo {100..104} | sed 's/ /\n/g' >numbers-file.txt
Edytuj dla komendy bonusowego vima (otwórz vim):
i100[esc]qqyyp[ctrl-a]q2@q:w numbers-file.txt
Aby uzyskać więcej liczb, 2
odpowiednio zwiększ .
printf '%s\n' {100..104}
Poza tym za pomocą seq
, while
, for
, printf
, perl
, echo
jak pokazano w poprzednim przykładzie, można również użyć Python
python -c "print list(range(100,105))"
Przykład:
[user@linux ~]~ python -c "print list(range(100,105))"
[100, 101, 102, 103, 104]
[user@linux ~]~