Wie konvertieren von STDIN Inhalt in ein array?
Habe ich eine INPUT-Datei, die den folgenden Inhalt hat:
123\n
456\n
789
Ich möchte mein Skript gerne so: script.rb < INPUT und haben es konvertieren Sie den Inhalt der EINGABE-Datei in ein array aufteilen auf die neue-Zeile-Zeichen. Also, ich würde mit so etwas wie myArray = [123,456,789]. Hier ist, was ich versucht habe zu tun und bin nicht viel Glück:
myArray = STDIN.to_s
myArray.split(/\n/)
puts field.size
Ich bin davon ausgegangen, dass es zu drucken 3, aber ich bin immer 15. Ich bin wirklich verwirrt hier. Alle Zeiger?
- oy vey. Die Dritte Zeile sagt eigentlich stellt myArray.Größe. Tippfehler in der Frage, nicht der code.
- So Bearbeiten Sie die Frage...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du willst
Dass bekommen alle von $stdin in ein array mit einem array-Eintrag pro Zeile.
Beachten Sie, dass dies spektakulär ineffizient (memory-wise) mit großen input-Dateien, so dass Sie sind far besser off mit so etwas wie:
statt
Weil die ehemaligen nicht Speicher für alles, was up-front. Versuchen Sie die Verarbeitung einer multi-gigabyte log-Datei in der zweiten Weise zu sehen, wie gut Ihr system die swap-Leistung ist... <grins>
Was deinem nach ist mit
$stdin
anstelle von $stdin.to_sSTDIN.Linien faul ist, aber gibt Ihnen eine array-artige Struktur zu übergeben, um-und Durchlaufen.