Wie erstelle ich eine Linkliste?


1

Also habe ich eine Website-Links, die so aussehen: site.com/1 site.com/2 site.com/3 usw., bis zu 1000. Wie erstelle ich eine Liste davon mit Bash oder einer anderen Programmiersprache unter Linux? Ich weiß, dass die Frage höchstwahrscheinlich doppelt und die Antwort wahrscheinlich einfach ist. Ich muss nur Zahlen von 1 bis 1000 zum Wert "site.com/" hinzufügen, konnte aber die gewünschte Antwort nicht finden.

Antworten:


4

Wenn Sie nur die Links ausdrucken möchten, brauchen Sie nur:

echo site.com/{1..1000}

Oder, um eine pro Zeile zu haben:

printf 'site.com/%s\n' {1..1000}

Wenn Sie die Liste in einem Array speichern möchten:

sites=(site.com/{1..1000})
# then
for site in "${sites[@]}" ...

Btw. seqist ein weiterer nützlicher Befehl, der weniger Zeit in Anspruch nimmt, aber ich weiß nicht, wie ich ihn in diesem Fall anwenden soll.
Pandya

2
@ Pandya Ich sehe nicht, wie seqhier hilfreich wäre. Es sei denn, Sie machen etwas Komplexes wie seq 1 1000 | xargs printf 'site.com/%s\n'und da wir hier Millisekunden sprechen, ist es sehr unwahrscheinlich, dass der Geschwindigkeitsunterschied jemals relevant ist.
Terdon

@ Pandya, ohne Benchmark-Daten zu sehen, würde ich Ihre Behauptung in Frage stellen, dass das Aufrufen eines externen Befehls schneller wäre als die Verwendung eines einfachen eingebauten Konstrukts.
Glenn Jackman

1
@glennjackman tatsächlich habe ich getestet, verglichen time printf 'site.com/%s\n' {1..100000} > /dev/null(real: 0,116 s) und time seq 1 100000 | xargs printf 'site.com/%s\n' > /dev/null(real: 0,056 s), so dass die Verwendung von seq + xargs in der Tat schneller sein könnte. Aber natürlich musste ich 2 Größenordnungen mehr Zahlen (100000 vs 1000) verwenden, damit die Differenz überhaupt quantifizierbar war. Und es scheint die gestiegene Komplexität nicht aufzuwiegen.
terdon

1
Das macht Sinn. Bash würde die gesamte Liste generieren und im Speicher ablegen, während
SEQ
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.