Ich versuche, große Textdateien in mehrere Textdateien zu teilen. Ich fand einen anderen Thread von vor ein paar Jahren mit einer sehr ähnlichen Prämisse, konnte aber meine genaue Situation nicht finden.Dateiaufspaltung mit Perl
https://unix.stackexchange.com/a/64691/183674
Wie würde ich teilt Sie die folgenden Daten, wenn die erste Zeile nicht mit 00 gestartet wird: 00: 00: 00?
00:00:00:00 00:00:05:00 01SC_001.jpg
00:00:14:29 00:00:19:29 01SC_002.jpg
00:01:07:20 00:01:12:20 01SC_003.jpg
00:00:00:00 00:00:03:25 02MI_001.jpg
00:00:03:25 00:00:08:25 02MI_002.jpg
00:00:35:27 00:00:40:27 02MI_003.jpg
00:00:00:00 00:00:05:00 03Bi_001.jpg
00:00:05:19 00:00:10:19 03Bi_002.jpg
00:01:11:17 00:01:16:17 03Bi_003.jpg
00:00:00:00 00:00:05:00 04CG_001.jpg
00:00:11:03 00:00:16:03 04CG_002.jpg
00:01:12:25 00:01:17:25 04CG_003.jpg
Hier ist der Code als Referenz:
#!/usr/bin/env perl
use strict;
use warnings;
open(my $infh, '<', 'ABC_TabDelim.txt') or die $!;
my $outfh;
my $filecount = 0;
while (my $line = <$infh>) {
if ($line =~ /^00:00:00:00/) {
close($outfh) if $outfh;
open($outfh, '>', sprintf('ABC%02d_TabDelim.txt', ++$filecount)) or die $!;
}
print {$outfh} $line or die "Failed to write to file: $!";
}
close($outfh);
close($infh);
ich nach der while-Anweisung eine print $line;
in der nächsten Zeile hinzugefügt versucht, es zu lesen Zeile für Zeile in anderen Tutorials, wie gezeigt, um zu versuchen zu machen, aber das tat behebe das Problem nicht.
Ich würde jede Eingabe schätzen.
edit: So zum Beispiel wie
00:01:16:17 00:00:05:00 01SC_001.jpg
00:00:14:29 00:00:19:29 01SC_002.jpg
00:01:07:20 00:01:12:20 01SC_003.jpg
00:00:00:00 00:00:03:25 02MI_001.jpg
00:00:03:25 00:00:08:25 02MI_002.jpg
00:00:35:27 00:00:40:27 02MI_003.jpg
00:00:00:00 00:00:05:00 03Bi_001.jpg
00:00:05:19 00:00:10:19 03Bi_002.jpg
00:01:11:17 00:01:16:17 03Bi_003.jpg
00:00:00:00 00:00:05:00 04CG_001.jpg
00:00:11:03 00:00:16:03 04CG_002.jpg
00:01:12:25 00:01:17:25 04CG_003.jpg
würde Ich mag drei separate Dateien erhalten, die jeweils
00:00:00:00 00:00:03:25 02MI_001.jpg
00:00:03:25 00:00:08:25 02MI_002.jpg
00:00:35:27 00:00:40:27 02MI_003.jpg
00:00:00:00 00:00:05:00 03Bi_001.jpg
00:00:05:19 00:00:10:19 03Bi_002.jpg
00:01:11:17 00:01:16:17 03Bi_003.jpg
00:00:00:00 00:00:05:00 04CG_001.jpg
00:00:11:03 00:00:16:03 04CG_002.jpg
00:01:12:25 00:01:17:25 04CG_003.jpg
verwirft die ersten drei Zeilen enthält.
Wie erwarten Sie, dass die Datei geteilt wird? –
Ich erwarte, dass der Code für jedes Vorkommen von 00: 00: 00: 00 eine Datei erstellt, die kurz vor der nächsten Instanz endet. Wie würde ich das umsetzen, wenn alle Zeilen mit 00: 00: 00: 00 ein paar Zeilen nach unten verschoben wären? – wittywater
Was ist Ihre erwartete Ausgabe? – ssr1012