大きなテキストファイルを複数のテキストファイルに分割しようとしています。私は数年前から同様の前提で別のスレッドを見つけましたが、私の正確な状況を見つけることができませんでした。Perlを使用したファイル分割
https://unix.stackexchange.com/a/64691/183674
どのように最初の行が00で起動しなかった場合、私は、次のデータを分割します: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
はここで参照のためのコードです:
#!/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);
私は他のチュートリアルに示すように、それは行ずつ読みにしようとするwhile文の後に次の行でprint $line;
を追加しようとしたが、これはやりました問題を修正することはありません。
私は入力を感謝します。
編集:
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
のような例えばので、私は最初の3行を破棄
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
を含むそれぞれ、3つの別々のファイルを取得したいと思います。
ファイルをどのように分割すると思いますか? –
私はコードが00:00:00:00のすべての出現に対してファイルを作成し、次のインスタンスの直前で終了することを期待しています。 00:00:00:00の行がすべて数行下にシフトされた場合、どうすれば実装できますか? – wittywater
期待される出力は? – ssr1012