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.txtwä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.txtwä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 104wird in Schritten von zwei drucken, nämlich: 100, 102,104
seqist von GNU Coreutils, nicht Unix. GNU steht sogar für GNU ist nicht Unix!
Linux wird mit dem seqBefehl ausgeliefert, der genau das tut. Wenn Sie den seqBefehl 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 2entsprechend.
printf '%s\n' {100..104}
Neben der Verwendung von seq, while, for, printf, perl, echowie 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 ~]~