Gibt es eine Möglichkeit, aus dem Nichts eine Datei zu erstellen, die eine Folge von Zahlen ist, beginnend mit einer bestimmten Zahl, eine pro Zeile?
so etwas wie
magic_command start 100 lines 5 > b.txt
und dann b.txt
wäre
100
101
102
103
104
Gibt es eine Möglichkeit, aus dem Nichts eine Datei zu erstellen, die eine Folge von Zahlen ist, beginnend mit einer bestimmten Zahl, eine pro Zeile?
so etwas wie
magic_command start 100 lines 5 > b.txt
und dann b.txt
wäre
100
101
102
103
104
Antworten:
Dafür gibt es bereits einen Befehl:
seq 100 104
druckt diese Zahlen in separaten Zeilen aus:
100
101
102
103
104
Leiten Sie diese Ausgabe einfach in eine Datei:
seq 100 104 > my_file.txt
und seq 100 2 104
wird in Schritten von zwei drucken, nämlich: 100
, 102
,104
seq
ist von GNU Coreutils, nicht Unix. GNU steht sogar für GNU ist nicht Unix!
Linux wird mit dem seq
Befehl ausgeliefert, der genau das tut. Wenn Sie den seq
Befehl nicht haben , ist es ein einfacher Einzeiler:
i=100; while [ $i -le 104 ]; do echo $i; i=$((i+1)); done >b.txt
oder in ksh / bash / zsh
for ((i=100; i<=104; i++)); do echo $i; done >b.txt
oder in zsh
print -l {100..104} >b.txt
$i
.
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
Wenn Ihnen ein Leerzeichen vor den meisten nichts ausmacht:
echo -e {100..104}\\n >numbers-file.txt
Ohne Leerzeichen, aber mit einem zusätzlichen Befehl:
echo {100..104} | sed 's/ /\n/g' >numbers-file.txt
Bearbeiten Sie für einen Bonus-Vim-Befehl (Open Vim):
i100[esc]qqyyp[ctrl-a]q2@q:w numbers-file.txt
Erhöhen Sie für mehr Zahlen 2
entsprechend.
printf '%s\n' {100..104}
Neben der Verwendung von seq
, while
, for
, printf
, perl
, echo
wie in der vorherigen Beispiel gezeigt, können Sie auch Python
python -c "print list(range(100,105))"
Beispiel:
[user@linux ~]~ python -c "print list(range(100,105))"
[100, 101, 102, 103, 104]
[user@linux ~]~