Ein anderer Ansatz mit awk, der auf Sundeeps Idee basiert , eine Liste zu verwenden:
awk 'BEGIN { a[15] a[25] }; NR % 50 in a'
Legen Sie die Schlüssel im Array a
basierend auf den Zeilen fest, die Sie drucken möchten. Drucken Sie Zeilen, bei denen NR % 50
einer der Schlüssel im Array übereinstimmt.
Um einen Hinweis auf die Leistung zu geben, habe ich diesen Ansatz zeitlich festgelegt und mit den anderen Antworten verglichen, wobei ich durchschnittlich user
3 Läufe benötigt habe.
0,276 s
$ time awk 'BEGIN { a[15] a[25] }; NR % 50 in a' <(seq 1000000) > /dev/null
0,374 s
$ time awk 'NR % 50 == 15 || NR % 50 == 25' <(seq 1000000) > /dev/null
0,384 s
$ time perl -ne 'print if $.%50==15 || $.%50==25' <(seq 1000000) > /dev/null
0,542s
$ time perl -ne 'print if grep {$_==$.%50} (15,25)' <(seq 1000000) > /dev/null